UNPKG

@aikidosec/firewall

Version:

Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks

42 lines (41 loc) 1.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.contextFromRequest = contextFromRequest; const buildRouteFromURL_1 = require("../../helpers/buildRouteFromURL"); const getIPAddressFromRequest_1 = require("../../helpers/getIPAddressFromRequest"); const parseCookies_1 = require("../../helpers/parseCookies"); const tryParseURLParams_1 = require("../../helpers/tryParseURLParams"); function contextFromRequest(req, body, module) { var _a, _b; const queryObject = {}; if (req.url) { const params = (0, tryParseURLParams_1.tryParseURLParams)(req.url); for (const [key, value] of params.entries()) { queryObject[key] = value; } } let parsedBody = undefined; if (body) { try { parsedBody = JSON.parse(body); } catch { // Ignore } } return { url: req.url, method: req.method, headers: req.headers, route: req.url ? (0, buildRouteFromURL_1.buildRouteFromURL)(req.url) : undefined, query: queryObject, source: `${module}.createServer`, routeParams: {}, cookies: ((_a = req.headers) === null || _a === void 0 ? void 0 : _a.cookie) ? (0, parseCookies_1.parse)(req.headers.cookie) : {}, body: parsedBody, remoteAddress: (0, getIPAddressFromRequest_1.getIPAddressFromRequest)({ headers: req.headers, remoteAddress: (_b = req.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress, }), }; }