UNPKG

@a11ywatch/core

Version:
69 lines 3.56 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.crawlStream = void 0; const extracter_1 = require("../../web/params/extracter"); const crawl_tracking_1 = require("../../event/crawl-tracking"); const message_1 = require("../../web/messages/message"); const crawl_stream_1 = require("../utils/crawl-stream"); const crawl_stream_slim_1 = require("../utils/crawl-stream-slim"); const get_user_data_1 = require("../utils/get-user-data"); const crawl_config_1 = require("./crawl-config"); const crawlStream = (req, res, slim) => __awaiter(void 0, void 0, void 0, function* () { var _a, _b; const body = req.body; const baseUrl = (body === null || body === void 0 ? void 0 : body.websiteUrl) || (body === null || body === void 0 ? void 0 : body.url); const url = baseUrl && decodeURIComponent(baseUrl); const removeTrailing = body.removeTrailing; if (!url) { res.status(message_1.StatusCode.BadRequest); return res.send([]); } const userNext = yield (0, get_user_data_1.getUserFromApiScan)(((_a = req === null || req === void 0 ? void 0 : req.headers) === null || _a === void 0 ? void 0 : _a.authorization) || ((_b = req === null || req === void 0 ? void 0 : req.cookies) === null || _b === void 0 ? void 0 : _b.jwt), req, res); if (userNext) { const uid = userNext === null || userNext === void 0 ? void 0 : userNext.id; if ((0, extracter_1.validateUID)(uid) && crawl_tracking_1.crawlingSet.has((0, crawl_tracking_1.getKey)(url, [], uid))) { res.status(message_1.StatusCode.Accepted); return res.send([]); } if (crawl_tracking_1.crawlingSet.has((0, crawl_tracking_1.getKey)(url, [], uid))) { res.status(message_1.StatusCode.ToManyRequest); return res.send([]); } res.raw.writeHead(message_1.StatusCode.Ok, { "Content-Type": "application/json", "Transfer-Encoding": "chunked", "Access-Control-Allow-Origin": "*", }); const crawlProps = yield (0, crawl_config_1.getCrawlConfig)({ id: userNext === null || userNext === void 0 ? void 0 : userNext.id, url, role: userNext === null || userNext === void 0 ? void 0 : userNext.role, subdomains: body.subdomains, tld: body.tld, robots: body.robots, sitemap: body.sitemap, }); res.raw.write("["); if (slim) { yield (0, crawl_stream_slim_1.crawlHttpStreamSlim)(crawlProps, res, removeTrailing); } else { yield (0, crawl_stream_1.crawlHttpStream)(crawlProps, res, removeTrailing); } res.raw.write("]"); setImmediate(() => { res.raw.end(); }); } }); exports.crawlStream = crawlStream; //# sourceMappingURL=crawl.js.map