Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
fetch: function (location, options, callback) {
!callback && _.isFunction(options) && (callback = options, options = {});
return (/^https?:\/\/.*/).test(location) ?
// Load from URL
request.get({ url: location }, (err, response, body) => {
if (err) {
return callback(err);
}
return callback(null, body);
}) :
fs.readFile(location, function (err, value) {
if (err) {
return callback(err);
}
return callback(null, value.toString());
});
},
if (!certificate) { return cb(null, options); }
_.assign(options, {
pfx: _.get(certificate, 'pfx.value'),
key: _.get(certificate, 'key.value'),
cert: _.get(certificate, 'cert.value'),
passphrase: certificate.passphrase
});
cb(null, options);
};
// Enable support for extending root CAs.
// Refer: https://github.com/postmanlabs/postman-request/pull/35
// @todo trigger console warning (using callback) if not enabled.
requests.enableNodeExtraCACerts();
module.exports = function (request, options, onStart, callback) {
var req = {};
async.waterfall([
function (next) {
setProxy(request, options, next);
},
function (request, options, next) {
setCertificate(request, options, next);
}
], function (err, options) {
if (err) { return callback(err); }
var request = requests(options, callback);
keepAlive: _.get(options, 'requester.keepAlive', true),
cookieJar: _.get(options, 'requester.cookieJar'), // default set later in this constructor
strictSSL: _.get(options, 'requester.strictSSL'),
maxResponseSize: _.get(options, 'requester.maxResponseSize'),
followRedirects: _.get(options, 'requester.followRedirects', true),
followOriginalHttpMethod: _.get(options, 'requester.followOriginalHttpMethod'),
maxRedirects: _.get(options, 'requester.maxRedirects'),
implicitCacheControl: _.get(options, 'requester.implicitCacheControl', true),
implicitTraceHeader: _.get(options, 'requester.implicitTraceHeader', true),
removeRefererHeaderOnRedirect: _.get(options, 'requester.removeRefererHeaderOnRedirect'),
network: _.get(options, 'network', {})
});
// create a cookie jar if one is not provided
if (!self.options.cookieJar) {
self.options.cookieJar = RequestCookieJar();
}
if (fileResolver && typeof fileResolver.readFile === FUNCTION &&
typeof (extendedRootCA = _.get(options, 'requester.extendedRootCA')) === STRING) {
// eslint-disable-next-line security/detect-non-literal-fs-filename
fileResolver.readFile(extendedRootCA, function (err, caCerts) {
if (err) {
// @todo trigger console error
}
else {
// set extendedRootCA option
self.options.extendedRootCA = caCerts;
}
return callback();
});
return new Promise((resolve, reject) => {
request(options, (err, response, body) => {
if (err) {
reject(err);
} else {
resolve({ body, response });
}
});
});
}
computeHeader: function (params) {
return Hawk.header(url.parse(params.url), params.method, params);
},