Spaces:
Sleeping
Sleeping
File size: 1,415 Bytes
de63014 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
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; |