Spaces:
Sleeping
Sleeping
| 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; |