UNPKG

ayakashi

Version:

The next generation web scraping framework

90 lines (89 loc) 3.82 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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.addCookiesRoutes = void 0; const express_1 = require("express"); const async_1 = require("async"); const tough_cookie_1 = require("tough-cookie"); const cookieStore_1 = require("../sessionDb/cookieStore"); const cookieHelpers_1 = require("../utils/cookieHelpers"); const debug_1 = __importDefault(require("debug")); //tslint:disable variable-name const d = debug_1.default("ayakashi:bridge"); function addCookiesRoutes(app, sessionDb, CookieModel) { const router = express_1.Router(); router.use(express_1.json()); router.post("/get_jar", function (_req, res) { return __awaiter(this, void 0, void 0, function* () { d("restoring jar"); try { const storeJar = new tough_cookie_1.CookieJar(new cookieStore_1.DbCookieStore(sessionDb, CookieModel), { rejectPublicSuffixes: false, looseMode: true }); storeJar.serialize(function (err, serialized) { if (err) { d(err); res.json({ ok: false, msg: err.message }); } else { d("jar restored"); res.json({ ok: true, cookies: serialized.cookies }); } }); } catch (e) { d(e); res.json({ ok: false, msg: e.message }); } }); }); router.post("/update_jar", function (req, res) { return __awaiter(this, void 0, void 0, function* () { d("updating jar"); try { const cookies = req.body.cookies; const storeJar = new tough_cookie_1.CookieJar(new cookieStore_1.DbCookieStore(sessionDb, CookieModel), { rejectPublicSuffixes: false, looseMode: true }); async_1.eachSeries(cookies, function (cookieObject, next) { const cookie = tough_cookie_1.Cookie.fromJSON(cookieObject); if (!cookie) { return next(); } storeJar.setCookie(cookie, cookieHelpers_1.getCookieUrl(cookie), next); }, function (err) { if (err) { d(err); res.json({ ok: false, msg: err.message }); } else { d("jar updated"); res.json({ ok: true }); } }); } catch (e) { d(e); res.json({ ok: false, msg: e.message }); } }); }); app.use("/cookies", router); } exports.addCookiesRoutes = addCookiesRoutes;