Skip to content
Snippets Groups Projects
Commit b3c524da authored by michael.minelli's avatar michael.minelli
Browse files

Add HttpManager (Axios interceptors)

parent dd039b0f
No related branches found
No related tags found
No related merge requests found
......@@ -5,8 +5,11 @@ require('dotenv').config();
import WorkerRole from './process/WorkerRole';
import ClusterManager from './process/ClusterManager';
import API from './express/API';
import HttpManager from './managers/HttpManager';
HttpManager.registerAxiosInterceptor();
(new ClusterManager([ {
role : WorkerRole.API,
quantity : ClusterManager.CORES,
......
import axios, { AxiosRequestHeaders } from 'axios';
import Config from '../config/Config';
import FormData from 'form-data';
import logger from '../shared/logging/WinstonLogger';
class HttpManager {
public handleCommandErrors: boolean = true;
private static _instance: HttpManager;
public static get instance(): HttpManager {
if ( !HttpManager._instance ) {
HttpManager._instance = new HttpManager();
}
return HttpManager._instance;
}
private constructor() { }
registerAxiosInterceptor() {
this.registerRequestInterceptor();
this.registerResponseInterceptor();
}
private registerRequestInterceptor() {
axios.interceptors.request.use((config) => {
if ( config.data instanceof FormData ) {
config.headers = { ...config.headers, ...(config.data as FormData).getHeaders() } as AxiosRequestHeaders;
}
if ( config.url && config.url.indexOf(Config.gitlab.apiURL) !== -1 ) {
config.headers['PRIVATE-TOKEN'] = Config.gitlab.account.token;
}
return config;
});
}
private registerResponseInterceptor() {
axios.interceptors.response.use((response) => {
return response;
}, (error) => {
logger.error(`${ JSON.stringify(error) }`);
return Promise.reject(error);
});
}
}
export default HttpManager.instance;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment