ayakashi
Version:
The next generation web scraping framework
60 lines (59 loc) • 2.78 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateCookieJar = exports.getCookieJar = void 0;
const core_1 = require("@ayakashi/request/core");
const cookieHelpers_1 = require("../utils/cookieHelpers");
const client_1 = require("../bridge/client");
//tslint:disable interface-name variable-name
function getCookieJar(port, options) {
return __awaiter(this, void 0, void 0, function* () {
if (options.persistentSession) {
const bridgeClient = client_1.getBridgeClient(port);
//create a new memory jar and add any cookies we have on the persistent store to it
const memJar = core_1.jar();
//@ts-ignore
memJar._jar.rejectPublicSuffixes = false;
//@ts-ignore
memJar._jar.looseMode = true;
const cookies = yield bridgeClient.getCookieJar();
return new Promise(function (resolve, reject) {
try {
cookies.forEach(function (cookie) {
memJar.setCookie(cookieHelpers_1.toCookieString(cookie), cookieHelpers_1.getCookieUrl(cookie), {
now: cookie.creation ? new Date(cookie.creation) : new Date(),
ignoreError: true
});
});
resolve({ jar: memJar, cookies: cookies });
}
catch (err) {
reject(err);
}
});
}
else {
//just return a new memory jar
return { jar: core_1.jar(), cookies: [] };
}
});
}
exports.getCookieJar = getCookieJar;
function updateCookieJar(port, memJar, options) {
return __awaiter(this, void 0, void 0, function* () {
if (!options.persistentSession)
return;
const bridgeClient = client_1.getBridgeClient(port);
const cookies = cookieHelpers_1.getAllCookiesFromRequestJar(memJar);
yield bridgeClient.updateCookieJar(cookies);
});
}
exports.updateCookieJar = updateCookieJar;