Rev 460 | AutorÃa | Ultima modificación | Ver Log |
import axios from 'axios'
export class Request {
#client
#abortController
constructor(baseURL, timeout = 5000) {
this.#client = axios({ baseURL, timeout })
this.#client.interceptors.request.use(
async (request) => {
const token = window.localStorage.getItem("jwt");
if (token) {
request.headers["Authorization"] = "Bearer " + token;
}
if (["post", "put", "delete"].includes(request.method)) {
try {
const resp = await this.get("/csrf");
const { data, success } = resp.data
if (success) {
request.headers["X-CSRF-TOKEN"] = data;
return request;
}
} catch (err) {
throw new Error(
`Axios problem with request during pre-flight phase: ${err}.`
);
}
}
},
(error) => {
return Promise.reject(error);
}
);
this.#abortController = new AbortController()
}
async MakeRequest(method = 'get', { endpoint, data, params }) {
const config = { ...params }
config.signal = this.abortController.signal
const response = method === 'get' || method === 'delete'
? await this.client[method](endpoint, config)
: await this.client[method](endpoint, data, config)
return response.data
}
async get(endpoint, params) {
return await this.MakeRequest('get', { endpoint, params })
}
async delete(endpoint, params) {
return await this.MakeRequest('delete', { endpoint, params })
}
async post(endpoint, data, params) {
return await this.MakeRequest('delete', { endpoint, data, params })
}
async put(endpoint, data, params) {
return await this.MakeRequest('delete', { endpoint, data, params })
}
cancelToken() {
if (!this.abortController.signal.aborted) {
this.abortController.abort()
}
}
}