Files
gemory/src/service.ts
2023-10-30 10:50:47 +01:00

63 lines
1.6 KiB
TypeScript

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)