http-cookie-agent
Version:
Allows cookies with every Node.js HTTP clients.
66 lines (64 loc) • 2.59 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CookieHandler = void 0;
var _convert_to_headers_object = require("../utils/convert_to_headers_object");
var _create_cookie_header_value = require("../utils/create_cookie_header_value");
var _save_cookies_from_header = require("../utils/save_cookies_from_header");
var _validate_cookie_options = require("../utils/validate_cookie_options");
/* global Buffer */
const kRequestUrl = Symbol('requestUrl');
const kCookieOptions = Symbol('cookieOptions');
const kDispatchHandler = Symbol('dispatchHandler');
const kDispatch = Symbol('dispatch');
class CookieHandler {
constructor(dispatch, cookieOptions, handler) {
(0, _validate_cookie_options.validateCookieOptions)(cookieOptions);
this[kRequestUrl] = null;
this[kCookieOptions] = cookieOptions;
this[kDispatchHandler] = handler;
this[kDispatch] = dispatch;
}
dispatch(options, handler) {
const cookieOptions = this[kCookieOptions];
const requestUrl = new URL(options.path, options.origin).toString();
const headers = (0, _convert_to_headers_object.convertToHeadersObject)(options.headers);
options.headers = headers;
headers['cookie'] = (0, _create_cookie_header_value.createCookieHeaderValue)({
cookieOptions,
passedValues: [headers['cookie']].flat(),
requestUrl
});
this[kRequestUrl] = requestUrl;
return this[kDispatch](options, handler);
}
onRequestStart(controller, context) {
this[kDispatchHandler].onRequestStart?.(controller, context);
}
onRequestUpgrade(controller, statusCode, headers, socket) {
this[kDispatchHandler].onRequestUpgrade?.(controller, statusCode, headers, socket);
}
onResponseStart(controller, statusCode, headers, statusMessage) {
const cookieOptions = this[kCookieOptions];
const requestUrl = this[kRequestUrl];
if (requestUrl != null) {
(0, _save_cookies_from_header.saveCookiesFromHeader)({
cookieOptions,
cookies: (0, _convert_to_headers_object.convertToHeadersObject)(headers)['set-cookie'],
requestUrl
});
}
this[kDispatchHandler].onResponseStart?.(controller, statusCode, headers, statusMessage);
}
onResponseData(controller, chunk) {
this[kDispatchHandler].onResponseData?.(controller, chunk);
}
onResponseEnd(controller, trailers) {
this[kDispatchHandler].onResponseEnd?.(controller, trailers);
}
onResponseError(controller, error) {
this[kDispatchHandler].onResponseError?.(controller, error);
}
}
exports.CookieHandler = CookieHandler;
;