import type { Language } from '../../runtime'; import { ApiHelper, toHeaderLanguage } from '../../runtime'; import type { IRelatedPhrases, ICategoryCard, IGroupCategories, ICardInfo, IChipsItem, } from '../../types'; /** Сервис для работы с API категорий */ export class CategoriesApiService { static async getCategoriesByName( lang: Language, name: string, niche? = NicheHelper.getSiteDefaultNiche(), ): Promise { return await ApiHelper.fetch( '/categories/get-categories-by-name', { method: 'GET', headers: { 'X-Niche': niche, 'X-Language': toHeaderLanguage(lang), 'X-Cache-Time': 259200, 'Content-Type': 'application/json', }, params: { name: name, }, }, useRuntimeConfig(), ); } static async getCategoriesByPhrase( lang: Language, phrase: string, phrasesLimit: number, modelsLimit: number, categoriesLimit: number, niche? = NicheHelper.getSiteDefaultNiche(), ): Promise> { return await ApiHelper.fetch( '/categories/get-categories-by-phrase', { method: 'GET', headers: { 'X-Niche': niche, 'X-Language': toHeaderLanguage(lang), 'X-Cache-Time': 259200, 'Content-Type': 'application/json', }, params: { query: phrase, 'phrases-limit': phrasesLimit, 'models-limit': modelsLimit, 'categories-limit': categoriesLimit, }, }, useRuntimeConfig(), ); } static async getTopRandomFooter( lang: Language, niche? = NicheHelper.getSiteDefaultNiche(), limit? = 29, // выводим максимально возможное колличество, из расчета 6 колонок по 5 рядов, и минус 1 это All categories ): Promise> { return await ApiHelper.fetch( '/categories/get-top-random-footer', { method: 'GET', headers: { 'X-Niche': niche, 'X-Language': toHeaderLanguage(lang), 'X-Cache-Time': 259200, 'Content-Type': 'application/json', }, params: { limit: limit, }, }, useRuntimeConfig(), ); } static async getTopRandomFull( lang: Language, niche? = NicheHelper.getSiteDefaultNiche(), limit? = 128, ): Promise> { return await ApiHelper.fetch( '/categories/get-top-random-full', { method: 'GET', headers: { 'X-Niche': niche, 'X-Language': toHeaderLanguage(lang), 'X-Cache-Time': 259200, 'Content-Type': 'application/json', }, params: { limit: limit, }, }, useRuntimeConfig(), ); } static async getRelatedCategories( lang: Language, name: string, niche? = NicheHelper.getSiteDefaultNiche(), limit? = 50, ): Promise { return await ApiHelper.fetch( '/categories/related-phrases-by-name', { method: 'GET', headers: { 'X-Niche': niche, 'X-Language': toHeaderLanguage(lang), 'X-Cache-Time': 259200, 'Content-Type': 'application/json', }, params: { limit: limit, name: name, }, }, useRuntimeConfig(), ); } static async getTopRandom( lang: Language, cacheId = 'default', niche? = NicheHelper.getSiteDefaultNiche(), limit? = 20, ): Promise> { return await ApiHelper.fetch( '/categories/get-top-random', { method: 'GET', headers: { 'X-Niche': niche, 'X-Cache-Extra': cacheId, 'X-Language': toHeaderLanguage(lang), 'X-Cache-Time': 604800, 'Content-Type': 'application/json', }, params: { limit: limit, }, }, useRuntimeConfig(), ); } static async getListGroupedByLetter( lang: Language, niche? = NicheHelper.getSiteDefaultNiche(), ): Promise>> { return await ApiHelper.fetch( '/categories/list-grouped-by-letter', { method: 'GET', headers: { 'X-Niche': niche, 'X-Language': toHeaderLanguage(lang), 'X-Cache-Time': 259200, 'Content-Type': 'application/json', }, }, useRuntimeConfig(), ); } static async getListGroupedByLetterChips( lang: Language, niche? = NicheHelper.getSiteDefaultNiche(), ): Promise>> { return await ApiHelper.fetch( '/categories/list-grouped-by-letter-chips', { method: 'GET', headers: { 'X-Niche': niche, 'X-Language': toHeaderLanguage(lang), 'X-Cache-Time': 259200, 'Content-Type': 'application/json', }, }, useRuntimeConfig(), ); } static async getCategoriesByLetter( lang: Language, letter: string, niche? = NicheHelper.getSiteDefaultNiche(), ): Promise> { return await ApiHelper.fetch( '/categories/list-by-letter', { method: 'POST', headers: { 'X-Niche': niche, 'X-Language': toHeaderLanguage(lang), 'X-Cache-Time': 259200, 'Content-Type': 'application/json', }, params: { letter, }, }, useRuntimeConfig(), ); } static async getGroupsCategories( lang: Language, niche? = NicheHelper.getSiteDefaultNiche(), ): Promise { return await ApiHelper.fetch( '/categories/group-categories', { method: 'GET', headers: { 'X-Niche': niche, 'X-Language': toHeaderLanguage(lang), 'X-Cache-Time': 259200, 'Content-Type': 'application/json', }, }, useRuntimeConfig(), ); } }