import axios, { AxiosError } from 'axios';
// Crea una instancia de Axios
const instance = axios.create({
baseURL: 'https://tu-dominio.com',
// Aquí puedes añadir más configuraciones si es necesario
});
// Simula un error 503 en todas las respuestas utilizando un interceptor
instance.interceptors.response.use(
response => {
// Crea un error de Axios simulado
const axiosError = new AxiosError(
"Service Unavailable", // mensaje de error
"ECONNABORTED", // código de error, este es un ejemplo, puede ajustarlo según sea necesario
undefined, // config, puedes añadir la configuración de la solicitud aquí si es necesario
undefined, // request, puedes añadir la solicitud aquí si es necesario
{ // response, aquí construyes la respuesta simulada
status: 503,
statusText: 'Service Unavailable',
headers: response.headers,
config: response.config,
data: 'Service Unavailable'
}
);
// Rechaza la promesa con el error de Axios simulado
return Promise.reject(axiosError);
},
error => {
// Este bloque maneja errores reales de las peticiones
return Promise.reject(error);
}
);
export const extractName = async (
text: TExtractNamePayload
): Promise<{ data: TExtractNameResponse; status: number }> => {
instance.defaults.headers['Authorization'] = `Bearer ${process.env.EXPO_PUBLIC_SERVER_SECRET_KEY}`;
try {
const response = await instance.post<TExtractNameResponse>('/api/v1/conversation/entity-extraction/names', text);
return { data: response.data, status: response.status };
} catch (error) {
if (axios.isAxiosError(error)) {
// Aquí capturas el error simulado o real y lo devuelves
return { data: error.response?.data, status: error.response?.status };
}
// Manejo de otros tipos de errores
throw error;
}
};