import axios, { AxiosRequestConfig } from 'axios'; import { getLogger, Logger } from '../logging/initalize.js'; const logger: Logger = getLogger(); /** * Utility function to fetch data from an API endpoint with error handling. * Logs errors but does NOT throw exceptions to keep the system running. * * @param url The API endpoint to fetch from. * @param description A short description of what is being fetched (for logging). * @param params * @returns The response data if successful, or null if an error occurs. */ export async function fetchWithLogging(url: string, description: string, params?: Record): Promise { try { const config: AxiosRequestConfig = params ? { params } : {}; const response = await axios.get(url, config); return response.data; } catch (error: any) { if (error.response) { if (error.response.status === 404) { logger.debug(`❌ ERROR: ${description} not found (404) at "${url}".`); } else { logger.debug( `❌ ERROR: Failed to fetch ${description}. Status: ${error.response.status} - ${error.response.statusText} (URL: "${url}")` ); } } else { logger.debug(`❌ ERROR: Network or unexpected error when fetching ${description}:`, error.message); } return null; } }