@a11ywatch/core
Version:
a11ywatch central API
72 lines • 3.7 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.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
;