123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- "use strict";
- /**
- * Module dependencies.
- */
- // eslint-disable-next-line node/no-deprecated-api
- const {
- parse
- } = require('url');
- const {
- CookieJar
- } = require('cookiejar');
- const {
- CookieAccessInfo
- } = require('cookiejar');
- const methods = require('methods');
- const request = require('../..');
- const AgentBase = require('../agent-base');
- /**
- * Initialize a new `Agent`.
- *
- * @api public
- */
- class Agent extends AgentBase {
- constructor(options) {
- super();
- this.jar = new CookieJar();
- if (options) {
- if (options.ca) {
- this.ca(options.ca);
- }
- if (options.key) {
- this.key(options.key);
- }
- if (options.pfx) {
- this.pfx(options.pfx);
- }
- if (options.cert) {
- this.cert(options.cert);
- }
- if (options.rejectUnauthorized === false) {
- this.disableTLSCerts();
- }
- }
- }
- /**
- * Save the cookies in the given `res` to
- * the agent's cookie jar for persistence.
- *
- * @param {Response} res
- * @api private
- */
- _saveCookies(res) {
- const cookies = res.headers['set-cookie'];
- if (cookies) {
- var _res$request;
- const url = parse(((_res$request = res.request) === null || _res$request === void 0 ? void 0 : _res$request.url) || '');
- this.jar.setCookies(cookies, url.hostname, url.pathname);
- }
- }
- /**
- * Attach cookies when available to the given `req`.
- *
- * @param {Request} req
- * @api private
- */
- _attachCookies(request_) {
- const url = parse(request_.url);
- const access = new CookieAccessInfo(url.hostname, url.pathname, url.protocol === 'https:');
- const cookies = this.jar.getCookies(access).toValueString();
- request_.cookies = cookies;
- }
- }
- for (const name of methods) {
- const method = name.toUpperCase();
- Agent.prototype[name] = function (url, fn) {
- const request_ = new request.Request(method, url);
- request_.on('response', this._saveCookies.bind(this));
- request_.on('redirect', this._saveCookies.bind(this));
- request_.on('redirect', this._attachCookies.bind(this, request_));
- this._setDefaults(request_);
- this._attachCookies(request_);
- if (fn) {
- request_.end(fn);
- }
- return request_;
- };
- }
- Agent.prototype.del = Agent.prototype.delete;
- // create a Proxy that can instantiate a new Agent without using `new` keyword
- // (for backward compatibility and chaining)
- const proxyAgent = new Proxy(Agent, {
- apply(target, thisArg, argumentsList) {
- return new target(...argumentsList);
- }
- });
- module.exports = proxyAgent;
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZSIsInJlcXVpcmUiLCJDb29raWVKYXIiLCJDb29raWVBY2Nlc3NJbmZvIiwibWV0aG9kcyIsInJlcXVlc3QiLCJBZ2VudEJhc2UiLCJBZ2VudCIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImphciIsImNhIiwia2V5IiwicGZ4IiwiY2VydCIsInJlamVjdFVuYXV0aG9yaXplZCIsImRpc2FibGVUTFNDZXJ0cyIsIl9zYXZlQ29va2llcyIsInJlcyIsImNvb2tpZXMiLCJoZWFkZXJzIiwiX3JlcyRyZXF1ZXN0IiwidXJsIiwic2V0Q29va2llcyIsImhvc3RuYW1lIiwicGF0aG5hbWUiLCJfYXR0YWNoQ29va2llcyIsInJlcXVlc3RfIiwiYWNjZXNzIiwicHJvdG9jb2wiLCJnZXRDb29raWVzIiwidG9WYWx1ZVN0cmluZyIsIm5hbWUiLCJtZXRob2QiLCJ0b1VwcGVyQ2FzZSIsInByb3RvdHlwZSIsImZuIiwiUmVxdWVzdCIsIm9uIiwiYmluZCIsIl9zZXREZWZhdWx0cyIsImVuZCIsImRlbCIsImRlbGV0ZSIsInByb3h5QWdlbnQiLCJQcm94eSIsImFwcGx5IiwidGFyZ2V0IiwidGhpc0FyZyIsImFyZ3VtZW50c0xpc3QiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vZGUvYWdlbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBub2RlL25vLWRlcHJlY2F0ZWQtYXBpXG5jb25zdCB7IHBhcnNlIH0gPSByZXF1aXJlKCd1cmwnKTtcbmNvbnN0IHsgQ29va2llSmFyIH0gPSByZXF1aXJlKCdjb29raWVqYXInKTtcbmNvbnN0IHsgQ29va2llQWNjZXNzSW5mbyB9ID0gcmVxdWlyZSgnY29va2llamFyJyk7XG5jb25zdCBtZXRob2RzID0gcmVxdWlyZSgnbWV0aG9kcycpO1xuY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJy4uLy4uJyk7XG5jb25zdCBBZ2VudEJhc2UgPSByZXF1aXJlKCcuLi9hZ2VudC1iYXNlJyk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgQWdlbnRgLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuY2xhc3MgQWdlbnQgZXh0ZW5kcyBBZ2VudEJhc2Uge1xuICBjb25zdHJ1Y3RvciAob3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmphciA9IG5ldyBDb29raWVKYXIoKTtcblxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICBpZiAob3B0aW9ucy5jYSkge1xuICAgICAgICB0aGlzLmNhKG9wdGlvbnMuY2EpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5rZXkpIHtcbiAgICAgICAgdGhpcy5rZXkob3B0aW9ucy5rZXkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5wZngpIHtcbiAgICAgICAgdGhpcy5wZngob3B0aW9ucy5wZngpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jZXJ0KSB7XG4gICAgICAgIHRoaXMuY2VydChvcHRpb25zLmNlcnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5yZWplY3RVbmF1dGhvcml6ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZVRMU0NlcnRzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIGNvb2tpZXMgaW4gdGhlIGdpdmVuIGByZXNgIHRvXG4gICAqIHRoZSBhZ2VudCdzIGNvb2tpZSBqYXIgZm9yIHBlcnNpc3RlbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1Jlc3BvbnNlfSByZXNcbiAgICogQGFwaSBwcml2YXRlXG4gICAqL1xuICBfc2F2ZUNvb2tpZXMgKHJlcykge1xuICAgIGNvbnN0IGNvb2tpZXMgPSByZXMuaGVhZGVyc1snc2V0LWNvb2tpZSddO1xuICAgIGlmIChjb29raWVzKSB7XG4gICAgICBjb25zdCB1cmwgPSBwYXJzZShyZXMucmVxdWVzdD8udXJsIHx8ICcnKTtcbiAgICAgIHRoaXMuamFyLnNldENvb2tpZXMoY29va2llcywgdXJsLmhvc3RuYW1lLCB1cmwucGF0aG5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggY29va2llcyB3aGVuIGF2YWlsYWJsZSB0byB0aGUgZ2l2ZW4gYHJlcWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVxdWVzdH0gcmVxXG4gICAqIEBhcGkgcHJpdmF0ZVxuICAgKi9cbiAgX2F0dGFjaENvb2tpZXMgKHJlcXVlc3RfKSB7XG4gICAgY29uc3QgdXJsID0gcGFyc2UocmVxdWVzdF8udXJsKTtcbiAgICBjb25zdCBhY2Nlc3MgPSBuZXcgQ29va2llQWNjZXNzSW5mbyhcbiAgICAgIHVybC5ob3N0bmFtZSxcbiAgICAgIHVybC5wYXRobmFtZSxcbiAgICAgIHVybC5wcm90b2NvbCA9PT0gJ2h0dHBzOidcbiAgICApO1xuICAgIGNvbnN0IGNvb2tpZXMgPSB0aGlzLmphci5nZXRDb29raWVzKGFjY2VzcykudG9WYWx1ZVN0cmluZygpO1xuICAgIHJlcXVlc3RfLmNvb2tpZXMgPSBjb29raWVzO1xuICB9XG59XG5cbmZvciAoY29uc3QgbmFtZSBvZiBtZXRob2RzKSB7XG4gIGNvbnN0IG1ldGhvZCA9IG5hbWUudG9VcHBlckNhc2UoKTtcbiAgQWdlbnQucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24gKHVybCwgZm4pIHtcbiAgICBjb25zdCByZXF1ZXN0XyA9IG5ldyByZXF1ZXN0LlJlcXVlc3QobWV0aG9kLCB1cmwpO1xuXG4gICAgcmVxdWVzdF8ub24oJ3Jlc3BvbnNlJywgdGhpcy5fc2F2ZUNvb2tpZXMuYmluZCh0aGlzKSk7XG4gICAgcmVxdWVzdF8ub24oJ3JlZGlyZWN0JywgdGhpcy5fc2F2ZUNvb2tpZXMuYmluZCh0aGlzKSk7XG4gICAgcmVxdWVzdF8ub24oJ3JlZGlyZWN0JywgdGhpcy5fYXR0YWNoQ29va2llcy5iaW5kKHRoaXMsIHJlcXVlc3RfKSk7XG4gICAgdGhpcy5fc2V0RGVmYXVsdHMocmVxdWVzdF8pO1xuICAgIHRoaXMuX2F0dGFjaENvb2tpZXMocmVxdWVzdF8pO1xuXG4gICAgaWYgKGZuKSB7XG4gICAgICByZXF1ZXN0Xy5lbmQoZm4pO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0XztcbiAgfTtcbn1cblxuQWdlbnQucHJvdG90eXBlLmRlbCA9IEFnZW50LnByb3RvdHlwZS5kZWxldGU7XG5cbi8vIGNyZWF0ZSBhIFByb3h5IHRoYXQgY2FuIGluc3RhbnRpYXRlIGEgbmV3IEFnZW50IHdpdGhvdXQgdXNpbmcgYG5ld2Aga2V5d29yZFxuLy8gKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFuZCBjaGFpbmluZylcbmNvbnN0IHByb3h5QWdlbnQgPSBuZXcgUHJveHkoQWdlbnQsIHtcbiAgYXBwbHkgKHRhcmdldCwgdGhpc0FyZywgYXJndW1lbnRzTGlzdCkge1xuICAgIHJldHVybiBuZXcgdGFyZ2V0KC4uLmFyZ3VtZW50c0xpc3QpO1xuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwcm94eUFnZW50O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07RUFBRUE7QUFBTSxDQUFDLEdBQUdDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDaEMsTUFBTTtFQUFFQztBQUFVLENBQUMsR0FBR0QsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUMxQyxNQUFNO0VBQUVFO0FBQWlCLENBQUMsR0FBR0YsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNqRCxNQUFNRyxPQUFPLEdBQUdILE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDbEMsTUFBTUksT0FBTyxHQUFHSixPQUFPLENBQUMsT0FBTyxDQUFDO0FBQ2hDLE1BQU1LLFNBQVMsR0FBR0wsT0FBTyxDQUFDLGVBQWUsQ0FBQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNTSxLQUFLLFNBQVNELFNBQVMsQ0FBQztFQUM1QkUs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
|