DataSage12's picture
Initial commit - HOLOKIA-AVATAR v2.2
de63014
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;