From 42dd032956e915c003813288c06d3c558713a8cf Mon Sep 17 00:00:00 2001 From: Carmine DiMascio Date: Fri, 19 Jul 2019 14:54:05 -0400 Subject: [PATCH] handle unsupported content type in body --- .../openapi.request.validator.2.ts | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/middlewares/openapi.request.validator.2.ts b/src/middlewares/openapi.request.validator.2.ts index 4ffd5b93..5abb4f78 100644 --- a/src/middlewares/openapi.request.validator.2.ts +++ b/src/middlewares/openapi.request.validator.2.ts @@ -150,7 +150,7 @@ export class RequestValidator { const parameters = this.parametersToSchema(path, pathSchema.parameters); const requestBody = pathSchema.requestBody; - let body = this.requestBodyToSchema(path, requestBody); + let body = this.requestBodyToSchema(req, requestBody); let requiredAdds = requestBody && requestBody.required ? ['body'] : []; const schema = { // $schema: "http://json-schema.org/draft-04/schema#", @@ -211,12 +211,19 @@ export class RequestValidator { }; } - private requestBodyToSchema(path, requestBody) { - const content = - (requestBody && requestBody.content && requestBody.content[TYPE_JSON]) || - {}; - const schema = content.schema; - return schema || {}; + private requestBodyToSchema(req, requestBody: any = {}) { + if (requestBody.content) { + const type = req.headers['content-type']; // || TYPE_JSON; + const content = requestBody.content[type]; + if (!content) + { + const message = `Unsupported Content-Type ${type}`; + const err = validationError(415, req.path, message); + throw ono(err, message) + } + return content.schema || {} + } + return {}; } private parametersToSchema(path, parameters = []) {