import { PartsIndexCatalogsResponse, PartsIndexGroup, PartsIndexEntityInfoResponse } from '@/types/partsindex'; const PARTS_INDEX_API_BASE = process.env.PARTSAPI_URL || 'https://api.parts-index.com'; const API_KEY = 'PI-E1C0ADB7-E4A8-4960-94A0-4D9C0A074DAE'; // Debug logging for development if (process.env.NODE_ENV === 'development') { console.log('πŸ” PartsIndex API Base URL:', PARTS_INDEX_API_BASE); console.log('πŸ” Environment variable NEXT_PUBLIC_PARTSAPI_URL:', process.env.NEXT_PUBLIC_PARTSAPI_URL); } class PartsIndexService { /** * ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² */ async getCatalogs(lang: string = 'ru'): Promise { try { const response = await fetch( `${PARTS_INDEX_API_BASE}/v1/catalogs?lang=${lang}`, { headers: { 'Accept': 'application/json', }, } ); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json(); } catch (error) { console.error('Ошибка получСния ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Parts Index:', error); throw error; } } /** * ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° */ async getCatalogGroups(catalogId: string, lang: string = 'ru'): Promise { try { const response = await fetch( `${PARTS_INDEX_API_BASE}/v1/catalogs/${catalogId}/groups?lang=${lang}`, { headers: { 'Accept': 'application/json', 'Authorization': API_KEY, }, } ); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json(); } catch (error) { console.error(`Ошибка получСния Π³Ρ€ΡƒΠΏΠΏ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ${catalogId}:`, error); throw error; } } /** * ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΏΠΎ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Ρƒ ΠΈ Π±Ρ€Π΅Π½Π΄Ρƒ */ async getEntityInfo(code: string, brand?: string, lang: string = 'ru'): Promise { try { const params = new URLSearchParams({ code: code, lang: lang }); if (brand) { params.append('brand', brand); } const response = await fetch( `${PARTS_INDEX_API_BASE}/v1/entities?${params.toString()}`, { headers: { 'Accept': 'application/json', 'Authorization': API_KEY, }, } ); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json(); } catch (error) { console.error(`Ошибка получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ ${code}:`, error); throw error; } } } export const partsIndexService = new PartsIndexService();