import axios, { AxiosInstance } from 'axios'; import log from 'loglevel'; const logResource = (a: AxiosInstance) => { a.interceptors.response.use(r => { log.debug(`[${r.config.method?.toUpperCase()}] ${r.config.url}`); return r; }, e => { log.error(`[${e.config.method?.toUpperCase()}] ${e.config.url} failed with ${e.response?.status} ${e.response?.statusText}`); return Promise.reject(e); }); } export const marbasAxiosInstance = axios.create({ baseURL: '/marbas/', headers: { 'accept': 'application/json', "Content-Type": "application/json" }, }) marbasAxiosInstance.interceptors.request.use(r => { if (!r.params?.page_size) { r.params = { ...r.params, page_size: 250 }; } return r; }) logResource(marbasAxiosInstance) marbasAxiosInstance.interceptors.response.use(async r => { const next = r.data?.next; let results = r.data?.results; if (next) { results = results.concat((await marbasAxiosInstance.request({ ...r.config, url: next, baseURL: '', })).data); } if (results) { r.data = results; } return r; }) export const evepraisalAxiosInstance = axios.create({ baseURL: '/appraisal/', headers: { 'accept': 'application/json', "Content-Type": "application/json" }, }) logResource(evepraisalAxiosInstance) export const esiAxiosInstance = axios.create({ baseURL: '/esi/', headers: { 'accept': 'application/json', "Content-Type": "application/json" }, }) logResource(esiAxiosInstance)