Skip to content

Commit 9f5fa58

Browse files
authored
fix: add support for openapi 3.0 content type validation (#97)
* tests: add test for openapi 3.0 content type validation * fix: support content type validation in openapi 3.0
1 parent 322df4b commit 9f5fa58

File tree

2 files changed

+323
-261
lines changed

2 files changed

+323
-261
lines changed

src/index.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,17 @@ function getOptions(opts = {}) {
9494
);
9595
}
9696

97+
function getContentTypes(isOpenApi3, dereferenced, currentPath, currentMethod) {
98+
let contentType;
99+
if (isOpenApi3) {
100+
const requestBody = dereferenced.paths[currentPath][currentMethod].requestBody;
101+
contentType = requestBody && Object.keys(requestBody.content);
102+
} else {
103+
contentType = dereferenced.paths[currentPath][currentMethod].consumes || dereferenced.paths[currentPath].consumes || dereferenced.consumes;
104+
}
105+
return contentType;
106+
}
107+
97108
function buildRequestValidator(referenced, dereferenced, currentPath, currentMethod, options) {
98109
const requestSchema = {};
99110
let localParameters = [];
@@ -122,8 +133,8 @@ function buildRequestValidator(referenced, dereferenced, currentPath, currentMet
122133
localParameters = oai2.buildPathParameters(parameters, pathParameters);
123134
}
124135

125-
requestSchema.parameters = buildParametersValidation(localParameters,
126-
dereferenced.paths[currentPath][currentMethod].consumes || dereferenced.paths[currentPath].consumes || dereferenced.consumes, options);
136+
const contentTypes = getContentTypes(isOpenApi3, dereferenced, currentPath, currentMethod);
137+
requestSchema.parameters = buildParametersValidation(localParameters, contentTypes, options);
127138

128139
return requestSchema;
129140
}

0 commit comments

Comments
 (0)