UNPKG

ayakashi

Version:

The next generation web scraping framework

109 lines (108 loc) 4.21 kB
"use strict"; 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.attachCookieActions = void 0; const cookieHelpers_1 = require("../../utils/cookieHelpers"); const lodash_1 = require("lodash"); function attachCookieActions(ayakashiInstance, memJar, connection, cookieSyncCallback) { ayakashiInstance.getCookie = function (filter) { return __awaiter(this, void 0, void 0, function* () { const cookies = yield concatAllCookies(); const theCookie = cookies.find(function (cookie) { return filterFn(cookie, filter); }); if (theCookie) { return theCookie.toJSON(); } else { return null; } }); }; ayakashiInstance.getCookies = function (filter) { return __awaiter(this, void 0, void 0, function* () { const cookies = yield concatAllCookies(); return cookies.filter(function (cookie) { return filterFn(cookie, filter); }).map(function (cookie) { return cookie.toJSON(); }); }); }; ayakashiInstance.setCookie = function (cookie) { return __awaiter(this, void 0, void 0, function* () { memJar.setCookie(cookieHelpers_1.toCookieString(cookie), cookieHelpers_1.getCookieUrl(cookie)); yield cookieSyncCallback(); }); }; ayakashiInstance.setCookies = function (cookies) { return __awaiter(this, void 0, void 0, function* () { for (const cookie of cookies) { memJar.setCookie(cookieHelpers_1.toCookieString(cookie), cookieHelpers_1.getCookieUrl(cookie)); } yield cookieSyncCallback(); }); }; function concatAllCookies() { return __awaiter(this, void 0, void 0, function* () { let requestCookies = cookieHelpers_1.getAllCookiesFromRequestJar(memJar); if (connection) { const { cookies } = yield connection.client.Network.getCookies(); requestCookies = requestCookies.concat(cookieHelpers_1.toRequestCookies(cookies)); requestCookies = lodash_1.uniqBy(requestCookies, function (cookie) { return `${cookie.domain || ""}${cookie.path || ""}${cookie.key}`; }); } return requestCookies; }); } function filterFn(cookie, filter) { if (!filter) return true; if (!filter.domain && !filter.key && !filter.path && !filter.url) return true; let accept = false; if (filter.key) { if (filter.key === cookie.key) { accept = true; } else { accept = false; } } if (filter.domain) { if (filter.domain === cookie.domain) { accept = true; } else { accept = false; } } if (filter.path) { if (filter.path === cookie.path) { accept = true; } else { accept = false; } } if (filter.url) { if (filter.url === cookieHelpers_1.getCookieUrl(cookie)) { accept = true; } else { accept = false; } } return accept; } } exports.attachCookieActions = attachCookieActions;