UNPKG

@a11ywatch/core

Version:
72 lines 3.7 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.getWebsiteReport = void 0; const website_source_builder_1 = require("@a11ywatch/website-source-builder"); const csv_writer_1 = require("csv-writer"); const utils_1 = require("../../../core/utils"); const reports_1 = require("../../../core/controllers/reports"); const extracter_1 = require("../../params/extracter"); const message_1 = require("../../messages/message"); const models_1 = require("../../../core/models"); const errors_1 = require("../../../core/strings/errors"); const csvStringifier = (0, csv_writer_1.createObjectCsvStringifier)({ header: [ { id: "code", title: "CODE" }, { id: "type", title: "TYPE" }, { id: "message", title: "MESSAGE" }, { id: "context", title: "CONTEXT" }, { id: "selector", title: "SELECTOR" }, { id: "recurrence", title: "RECURRENCE" }, ], }); const csvHeader = csvStringifier.getHeaderString().trim(); const getWebsiteReport = (req, res) => __awaiter(void 0, void 0, void 0, function* () { var _a, _b; const download = (0, extracter_1.paramParser)(req, "download"); const csv = (0, extracter_1.paramParser)(req, "csv"); const slug = (0, extracter_1.paramParser)(req, "q") || (0, extracter_1.paramParser)(req, "url") || (0, extracter_1.paramParser)(req, "pageUrl"); if (!slug) { res.status(message_1.StatusCode.BadRequest); return res.send((0, models_1.responseModel)({ success: false, code: message_1.StatusCode.BadRequest, message: errors_1.URL_NOT_FOUND, })); } const usr = (0, utils_1.getUserFromToken)(req.headers.authorization); const userId = (_a = usr === null || usr === void 0 ? void 0 : usr.payload) === null || _a === void 0 ? void 0 : _a.keyid; const query = (0, website_source_builder_1.initUrl)(decodeURIComponent(slug)); let data; const report = yield (0, reports_1.getReport)(query, userId); if (report === null || report === void 0 ? void 0 : report.website) { data = report.website; } if (req.headers["content-type"] === "text/csv" || csv) { res.header("Content-Type", "text/csv"); res.header("Content-Disposition", "attachment; filename=" + `${encodeURIComponent(data.url)}-${data.lastScanDate}-audit.csv`); return res.status(message_1.StatusCode.Ok).send(Buffer.from(`${csvHeader}\n${csvStringifier.stringifyRecords(((_b = data === null || data === void 0 ? void 0 : data.issue) === null || _b === void 0 ? void 0 : _b.length) ? data.issue : data === null || data === void 0 ? void 0 : data.issues)}`)); } if (download) { if (data) { return yield (0, utils_1.downloadToExcel)(req, res, data); } else { return res.send("Error downloading report. Report not found."); } } res.send(data); }); exports.getWebsiteReport = getWebsiteReport; //# sourceMappingURL=website.js.map