refactor: Restructure twitter app with beforeRequest hook

This commit is contained in:
Faruk AYDIN
2022-10-18 11:13:53 +02:00
committed by Ali BARIN
parent bc402883b3
commit a5e114ac68
14 changed files with 119 additions and 113 deletions

View File

@@ -1,17 +1,40 @@
import axios, { AxiosRequestConfig } from 'axios';
export { AxiosInstance as IHttpClient } from 'axios';
import { IHttpClientParams } from '@automatisch/types';
import { URL } from 'url';
export default function createHttpClient({ $, baseURL, beforeRequest = [] }: IHttpClientParams) {
const removeBaseUrlForAbsoluteUrls = (
requestConfig: AxiosRequestConfig
): AxiosRequestConfig => {
try {
const url = new URL(requestConfig.url);
requestConfig.baseURL = url.origin;
requestConfig.url = url.pathname + url.search;
return requestConfig;
} catch {
return requestConfig;
}
};
export default function createHttpClient({
$,
baseURL,
beforeRequest = [],
}: IHttpClientParams) {
const instance = axios.create({
baseURL,
});
instance.interceptors.request.use((requestConfig: AxiosRequestConfig): AxiosRequestConfig => {
return beforeRequest.reduce((newConfig, beforeRequestFunc) => {
return beforeRequestFunc($, newConfig);
}, requestConfig);
});
instance.interceptors.request.use(
(requestConfig: AxiosRequestConfig): AxiosRequestConfig => {
const newRequestConfig = removeBaseUrlForAbsoluteUrls(requestConfig);
return beforeRequest.reduce((newConfig, beforeRequestFunc) => {
return beforeRequestFunc($, newConfig);
}, newRequestConfig);
}
);
instance.interceptors.response.use(
(response) => response,