mirror of
https://github.com/vvsviridov/enm-cli.git
synced 2025-11-05 14:43:39 +00:00
52 lines
1.2 KiB
JavaScript
Executable File
52 lines
1.2 KiB
JavaScript
Executable File
const axios = require('axios')
|
|
const https = require('https')
|
|
const axiosCookieJarSupport = require('axios-cookiejar-support').default
|
|
const tough = require('tough-cookie')
|
|
const logError = require('../../util/logError')
|
|
const SpinnerWithCounter = require('./SpinnerWithCounter')
|
|
|
|
|
|
axiosCookieJarSupport(axios)
|
|
|
|
let spinner = new SpinnerWithCounter()
|
|
|
|
|
|
function beforeRequest(config) {
|
|
const {text = 'Executing request...', ...newConfig} = config
|
|
spinner.start(text)
|
|
return newConfig
|
|
}
|
|
|
|
|
|
function errorRequest(error) {
|
|
spinner.fail()
|
|
if (401 === error.response.status) {
|
|
logError(error)
|
|
process.exit(1)
|
|
}
|
|
return Promise.reject(error)
|
|
}
|
|
|
|
|
|
function beforeResponse(response) {
|
|
spinner.succeed()
|
|
return response
|
|
}
|
|
|
|
|
|
function axiosHttpClient(url) {
|
|
const axiosClient = axios.create({
|
|
baseURL: url,
|
|
httpsAgent: new https.Agent({
|
|
rejectUnauthorized: false
|
|
}),
|
|
withCredentials: true,
|
|
jar: new tough.CookieJar(),
|
|
})
|
|
axiosClient.interceptors.request.use(beforeRequest, errorRequest)
|
|
axiosClient.interceptors.response.use(beforeResponse, errorRequest)
|
|
return axiosClient
|
|
}
|
|
|
|
|
|
module.exports = axiosHttpClient |