swagger-route-validator
Version:
The fastest openapi validation middleware
26 lines (25 loc) • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateRequest = validateRequest;
const valueValidator_1 = require("./valueValidator");
function validateRequest(routeSpec, req, spec = {}, errors) {
errors = errors || [];
if (routeSpec.parameters)
validateParameters(routeSpec.parameters, req, spec, errors);
if (errors.length > 0)
return errors;
if (routeSpec[req.method.toLowerCase()])
return validateRequest(routeSpec[req.method.toLowerCase()], req, spec, errors);
if (routeSpec.requestBody && routeSpec.requestBody.content)
(0, valueValidator_1.validateValue)('body', req.body, routeSpec.requestBody.content, (0, valueValidator_1.set)(req), errors, spec);
return errors;
}
function validateParameters(parameters, req, spec, errors) {
for (let i = 0; i < parameters.length; i++) {
const param = parameters[i];
const paramLocation = param.in === 'header' ? 'headers' : param.in;
const value = paramLocation === 'body' ? req.body : (req[paramLocation] && req[paramLocation][param.name]) || (req.params && req.params[param.name]) || undefined;
const cursor = paramLocation === 'body' ? 'body' : `${paramLocation}.${param.name}`;
(0, valueValidator_1.validateValue)(cursor, value, param, (0, valueValidator_1.set)(req), errors, spec);
}
}