@condor-labs/axios
Version:
This module provide and useful helper to use the official Axios library.
73 lines (61 loc) • 1.99 kB
JavaScript
const axios = require("axios");
const http = require("http");
const https = require("https");
const {
request: requestStacktrace,
response: responseStacktrace,
} = require("./plugins/stacktrace");
const DEFAULT_SOCKETS_TIMEOUT = 4*1000; // 4 secs
const {
AXIOS_KEEP_ALIVE_DISABLED,
AXIOS_KEEP_ALIVE_MSECS,
AXIOS_MAX_SOCKETS,
AXIOS_MAX_TOTAL_SOCKETS,
AXIOS_MAX_FREE_SOCKETS,
AXIOS_SOCKETS_SCHEDULING,
AXIOS_SOCKETS_TIMEOUT
} = process.env;
let httpAgent = undefined,
httpsAgent = undefined,
httpAgentDef = undefined,
httpsAgentDef = undefined;
if(AXIOS_KEEP_ALIVE_DISABLED != "true"){
let agentSettings = {
keepAlive: true,
keepAliveMsecs: AXIOS_KEEP_ALIVE_MSECS ? +AXIOS_KEEP_ALIVE_MSECS : undefined,
maxSockets: AXIOS_MAX_SOCKETS ? +AXIOS_MAX_SOCKETS : undefined,
maxTotalSockets: AXIOS_MAX_TOTAL_SOCKETS ? +AXIOS_MAX_TOTAL_SOCKETS : undefined,
maxFreeSockets: AXIOS_MAX_FREE_SOCKETS ? +AXIOS_MAX_FREE_SOCKETS : undefined,
scheduling: AXIOS_SOCKETS_SCHEDULING,
timeout: AXIOS_SOCKETS_TIMEOUT ? +AXIOS_SOCKETS_TIMEOUT : DEFAULT_SOCKETS_TIMEOUT
};
httpAgent = new http.Agent(agentSettings);
httpsAgent = new https.Agent(agentSettings);
httpAgentDef = new http.Agent(agentSettings);
httpsAgentDef = new https.Agent(agentSettings);
}
const instance = axios.create({
httpAgent,
httpsAgent,
});
const instanceDefault = axios.create({
httpAgentDef,
httpsAgentDef,
});
// add interceptor to the request
instance.interceptors.request.use(requestStacktrace, undefined, {
synchronous: true,
});
instanceDefault.interceptors.request.use(requestStacktrace, undefined, {
synchronous: true,
});
// add interceptor to the response
instance.interceptors.response.use(undefined, responseStacktrace, {
synchronous: true,
});
instanceDefault.interceptors.response.use(undefined, responseStacktrace, {
synchronous: true,
});
// setup default instance.
instance.default = instanceDefault;
module.exports = instance;