UNPKG

swagger-route-validator

Version:

The fastest openapi validation middleware

26 lines (25 loc) 1.38 kB
"use strict"; 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); } }