UNPKG

dino-express

Version:

DinO enabled REST framework based on express

45 lines 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApiValidator = void 0; const express_openapi_validate_1 = require("express-openapi-validate"); class ApiValidator { validationEnabled; environment; openApiValidator; constructor(environment) { this.environment = environment; this.validationEnabled = true; if (environment.get('dino:api:validation:enabled') != undefined) { this.validationEnabled = environment.get('dino:api:validation:enabled'); } } init(apis) { if (this.validationEnabled) { const config = this.environment.get('dino:api:validation:configuration') || { ajvOptions: { coerceTypes: true } }; this.openApiValidator = new express_openapi_validate_1.OpenApiValidator(apis, config); } } getRequestValidator(method, path) { if (this.validationEnabled) { const validator = this.openApiValidator.validate(method, path); return (req, res, next) => { const reqToValidate = Object.assign({}, req, { cookies: req.cookies ? Object.assign({}, req.cookies, req.signedCookies) : undefined, }); if (!reqToValidate.hasOwnProperty('headers')) { reqToValidate.headers = req.headers; } return validator(reqToValidate, res, next); }; } return (_req, _res, next) => next(); } getResponseValidator(method, path) { if (this.validationEnabled) { return this.openApiValidator.validateResponse(method, path); } return () => { }; } } exports.ApiValidator = ApiValidator; //# sourceMappingURL=api.validator.js.map