"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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