import axios, { AxiosError, AxiosRequestHeaders } from 'axios'; import FormData from 'form-data'; import logger from '../shared/logging/WinstonLogger'; class HttpManager { registerAxiosInterceptor() { this.registerRequestInterceptor(); this.registerResponseInterceptor(); } private registerRequestInterceptor() { axios.interceptors.request.use(config => { if ( config.data instanceof FormData ) { config.headers = { ...config.headers, ...(config.data as FormData).getHeaders() } as AxiosRequestHeaders; } return config; }); } private registerResponseInterceptor() { axios.interceptors.response.use(response => response, error => { if ( error instanceof AxiosError ) { logger.error(`${ JSON.stringify(error.response?.data) }`); } else { logger.error(`${ JSON.stringify(error) }`); } return Promise.reject(error); }); } } export default new HttpManager();