@aikidosec/firewall
Version:
Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks
37 lines (36 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.contextFromStream = contextFromStream;
const buildRouteFromURL_1 = require("../../../helpers/buildRouteFromURL");
const getIPAddressFromRequest_1 = require("../../../helpers/getIPAddressFromRequest");
const parseCookies_1 = require("../../../helpers/parseCookies");
const tryParseURLParams_1 = require("../../../helpers/tryParseURLParams");
/**
* Extracts required information from the http2 stream and headers to create a context object.
*/
function contextFromStream(stream, headers, module) {
var _a;
const url = headers[":path"];
const queryObject = {};
if (url) {
const params = (0, tryParseURLParams_1.tryParseURLParams)(url);
for (const [key, value] of params.entries()) {
queryObject[key] = value;
}
}
return {
url: url,
method: headers[":method"],
headers: headers,
route: url ? (0, buildRouteFromURL_1.buildRouteFromURL)(url) : undefined,
query: queryObject,
source: `${module}.createServer`,
routeParams: {},
cookies: (headers === null || headers === void 0 ? void 0 : headers.cookie) ? (0, parseCookies_1.parse)(headers.cookie) : {},
body: undefined,
remoteAddress: (0, getIPAddressFromRequest_1.getIPAddressFromRequest)({
headers: headers,
remoteAddress: (_a = stream.session) === null || _a === void 0 ? void 0 : _a.socket.remoteAddress,
}),
};
}