ayakashi
Version:
The next generation web scraping framework
109 lines (108 loc) • 4.21 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.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;