63 lines
1.6 KiB
TypeScript
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)
|