import axios from 'axios'; import { API_LLM, API_TTS, API_STT } from '../config/api'; // Configuration Axios globale const api = axios.create({ timeout: 30000, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', } }); // Intercepteur pour la gestion globale des erreurs api.interceptors.response.use( response => response, error => { let errorMessage = "Une erreur s'est produite"; if (error.code === 'ECONNABORTED') { errorMessage = "La requête a expiré"; } else if (error.response) { const status = error.response.status; if (status === 400) { errorMessage = error.response.data?.detail || "Requête invalide"; } else if (status === 401) { errorMessage = "Non autorisé"; } else if (status >= 500) { errorMessage = "Erreur serveur"; } } else if (error.request) { errorMessage = "Pas de réponse du serveur"; } return Promise.reject({ message: errorMessage }); } ); // Fonctions d'appel API export const callLLM = (text) => api.post(API_LLM, { text }); export const callTTS = (text, lang) => api.post(API_TTS, { text, lang }, { responseType: 'blob', headers: { 'Accept': 'audio/mpeg' } }); export const callSTT = (file) => api.post(API_STT, file, { headers: { 'Content-Type': 'multipart/form-data', } }); export default api;