@aikidosec/firewall
Version:
Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks
43 lines (42 loc) • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getApiInfo = getApiInfo;
const getApiAuthType_1 = require("./getApiAuthType");
const getBodyDataType_1 = require("./getBodyDataType");
const getDataSchema_1 = require("./getDataSchema");
/**
* Get body data type and schema from context.
* Returns undefined if the body is not an object or if the body type could not be determined.
*/
function getApiInfo(context) {
try {
let bodyInfo;
if (context.body &&
typeof context.body === "object" &&
Object.keys(context.body).length > 0 &&
!context.graphql) {
bodyInfo = {
type: (0, getBodyDataType_1.getBodyDataType)(context.headers),
schema: (0, getDataSchema_1.getDataSchema)(context.body),
};
}
let queryInfo;
if (context.query &&
typeof context.query === "object" &&
Object.keys(context.query).length > 0) {
queryInfo = (0, getDataSchema_1.getDataSchema)(context.query);
}
const authInfo = (0, getApiAuthType_1.getApiAuthType)(context);
if (!bodyInfo && !queryInfo && !authInfo) {
return undefined;
}
return {
body: bodyInfo,
query: queryInfo,
auth: authInfo,
};
}
catch {
return undefined;
}
}