parse-openapi
Version:
OpenAPI v3 parser
86 lines (85 loc) • 3.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOperationRequestBody = void 0;
const getPattern_1 = require("../utils/getPattern");
const getContent_1 = require("./getContent");
const getModel_1 = require("./getModel");
const getType_1 = require("./getType");
const getOperationRequestBody = (openApi, body) => {
const requestBody = {
in: 'body',
export: 'interface',
prop: 'requestBody',
name: 'requestBody',
type: 'any',
base: 'any',
template: null,
link: null,
description: body.description || null,
default: undefined,
isDefinition: false,
isReadOnly: false,
isRequired: body.required === true,
isNullable: body.nullable === true,
imports: [],
enum: [],
enums: [],
properties: [],
mediaType: null,
};
if (body.content) {
const content = (0, getContent_1.getContent)(openApi, body.content);
if (content) {
requestBody.mediaType = content.mediaType;
switch (requestBody.mediaType) {
case 'application/x-www-form-urlencoded':
case 'multipart/form-data':
requestBody.in = 'formData';
requestBody.name = 'formData';
requestBody.prop = 'formData';
break;
}
if (content.schema.$ref) {
const model = (0, getType_1.getType)(content.schema.$ref);
requestBody.export = 'reference';
requestBody.type = model.type;
requestBody.base = model.base;
requestBody.template = model.template;
requestBody.imports.push(...model.imports);
return requestBody;
}
else {
const model = (0, getModel_1.getModel)(openApi, content.schema);
requestBody.export = model.export;
requestBody.type = model.type;
requestBody.base = model.base;
requestBody.template = model.template;
requestBody.link = model.link;
requestBody.isReadOnly = model.isReadOnly;
requestBody.isRequired = requestBody.isRequired || model.isRequired;
requestBody.isNullable = requestBody.isNullable || model.isNullable;
requestBody.format = model.format;
requestBody.maximum = model.maximum;
requestBody.exclusiveMaximum = model.exclusiveMaximum;
requestBody.minimum = model.minimum;
requestBody.exclusiveMinimum = model.exclusiveMinimum;
requestBody.multipleOf = model.multipleOf;
requestBody.maxLength = model.maxLength;
requestBody.minLength = model.minLength;
requestBody.maxItems = model.maxItems;
requestBody.minItems = model.minItems;
requestBody.uniqueItems = model.uniqueItems;
requestBody.maxProperties = model.maxProperties;
requestBody.minProperties = model.minProperties;
requestBody.pattern = (0, getPattern_1.getPattern)(model.pattern);
requestBody.imports.push(...model.imports);
requestBody.enum.push(...model.enum);
requestBody.enums.push(...model.enums);
requestBody.properties.push(...model.properties);
return requestBody;
}
}
}
return requestBody;
};
exports.getOperationRequestBody = getOperationRequestBody;