Preview:
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;
  }
};
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter