@stordata/vsphere-soapify
Version:
A NodeJS abstraction layer for the vSphere SOAP API
38 lines (26 loc) • 955 B
JavaScript
;
const axios = require('axios'),
{ CookieJar } = require('tough-cookie');
module.exports = (endpoint, options) => enableCookieJarSupport(endpoint, axios.create(options));
//
function enableCookieJarSupport(endpoint, instance) {
const jar = new CookieJar(); // In-memory, synchronous cookie jar
instance.interceptors.request.use(requestInterceptor(endpoint, jar));
instance.interceptors.response.use(responseInterceptor(endpoint, jar));
return instance;
}
function requestInterceptor(endpoint, jar) {
return function interceptorSettingCookiesFromJar(req) {
req.headers.Cookie = jar.getCookieStringSync(endpoint);
return req;
};
}
function responseInterceptor(endpoint, jar) {
return function interceptorStoringCookiesInJar(res) {
const { headers: { 'set-cookie': cookies } } = res;
if (cookies) {
cookies.forEach(cookie => jar.setCookieSync(cookie, endpoint));
}
return res;
};
}