@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
JavaScript
;
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,
}),
};
}