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

Add HttpManager (Axios interceptors)

parent dd039b0f
Branches
Tags
No related merge requests found
...@@ -5,8 +5,11 @@ require('dotenv').config(); ...@@ -5,8 +5,11 @@ require('dotenv').config();
import WorkerRole from './process/WorkerRole'; import WorkerRole from './process/WorkerRole';
import ClusterManager from './process/ClusterManager'; import ClusterManager from './process/ClusterManager';
import API from './express/API'; import API from './express/API';
import HttpManager from './managers/HttpManager';
HttpManager.registerAxiosInterceptor();
(new ClusterManager([ { (new ClusterManager([ {
role : WorkerRole.API, role : WorkerRole.API,
quantity : ClusterManager.CORES, 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