@aikidosec/firewall
Version:
Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks
33 lines (32 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.contextFromRequest = contextFromRequest;
const Context_1 = require("../../agent/Context");
const buildRouteFromURL_1 = require("../../helpers/buildRouteFromURL");
const getIPAddressFromRequest_1 = require("../../helpers/getIPAddressFromRequest");
const parseCookies_1 = require("../../helpers/parseCookies");
const getRemoteAddress_1 = require("./getRemoteAddress");
async function contextFromRequest(c) {
const { req } = c;
const cookieHeader = req.header("cookie");
const existingContext = (0, Context_1.getContext)();
return {
method: c.req.method,
remoteAddress: (0, getIPAddressFromRequest_1.getIPAddressFromRequest)({
headers: req.header(),
remoteAddress: (0, getRemoteAddress_1.getRemoteAddress)(c),
}),
// Pass the body from the existing context if it's already set, otherwise the body is set in wrapRequestBodyParsing
body: existingContext && existingContext.source === "hono"
? existingContext.body
: undefined,
url: req.url,
headers: req.header(),
routeParams: req.param(),
query: req.query(),
/* c8 ignore next */
cookies: cookieHeader ? (0, parseCookies_1.parse)(cookieHeader) : {},
source: "hono",
route: (0, buildRouteFromURL_1.buildRouteFromURL)(req.url),
};
}