dino-express
Version:
DinO enabled REST framework based on express
45 lines • 1.78 kB
JavaScript
;
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