in packages/libs/oai2-to-oai3/src/converter.ts [965:1063]
private async visitOperationBodyParameter(
targetOperation: MappingTreeObject<HttpOperation>,
parameterValue: OpenAPI2BodyParameter | OpenAPI2FormDataParameter,
sourcePointer: string,
parameterItemMembers: () => Iterable<Node>,
consumes: string[],
) {
if (targetOperation.requestBody === undefined) {
targetOperation.__set__("requestBody", this.newObject(sourcePointer));
}
const requestBody: MappingTreeObject<oai3.RequestBody> = targetOperation.requestBody! as any;
copyPropertyIfNotSet(requestBody, "description", parameterValue, sourcePointer);
if (parameterValue.in === "body") {
copyPropertyIfNotSet(requestBody, "required", parameterValue, sourcePointer);
}
if (parameterValue["x-ms-client-name"]) {
if (requestBody["x-ms-client-name"] === undefined) {
requestBody?.__set__("x-ms-client-name", {
value: parameterValue["x-ms-client-name"],
sourcePointer: `${sourcePointer}/x-ms-client-name`,
});
}
if (requestBody["x-ms-requestBody-name"] === undefined) {
requestBody?.__set__("x-ms-requestBody-name", {
value: parameterValue["x-ms-client-name"],
sourcePointer: `${sourcePointer}/x-ms-client-name`,
});
}
} else if (parameterValue.name) {
if (requestBody["x-ms-requestBody-name"] === undefined) {
requestBody?.__set__("x-ms-requestBody-name", {
value: parameterValue.name,
sourcePointer: `${sourcePointer}/name`,
});
}
}
copyPropertyIfNotSet(requestBody, "x-ms-parameter-location", parameterValue, sourcePointer);
copyPropertyIfNotSet(requestBody, "x-ms-client-flatten", parameterValue, sourcePointer);
if (requestBody!.content === undefined) {
requestBody!.__set__("content", this.newObject(sourcePointer));
}
if (parameterValue.in === "formData") {
let contentType = "application/x-www-form-urlencoded";
if (consumes.length && consumes.indexOf("multipart/form-data") >= 0) {
contentType = "multipart/form-data";
}
if (requestBody.content[contentType] === undefined) {
requestBody.content.__set__(contentType, this.newObject(sourcePointer));
}
if (requestBody.content[contentType].schema === undefined) {
requestBody.content[contentType].__set__("schema", this.newObject(sourcePointer));
}
const schema = requestBody.content[contentType].schema as MappingTreeObject<oai3.Schema>;
this.addFormDataParameterToSchema(schema, parameterValue, sourcePointer, parameterItemMembers, contentType);
} else if (parameterValue.in === "body") {
const consumesTempArray = [...consumes];
if (consumesTempArray.length === 0) {
consumesTempArray.push("application/json");
}
for (const mimetype of consumesTempArray) {
if (requestBody.content[mimetype] === undefined) {
requestBody.content.__set__(mimetype, this.newObject(sourcePointer));
}
if (requestBody.content[mimetype].schema === undefined) {
requestBody.content[mimetype].__set__("schema", this.newObject(sourcePointer));
}
if (parameterValue.schema !== undefined) {
for (const { key, value, childIterator } of parameterItemMembers()) {
if (key === "schema") {
await this.visitSchema(requestBody.content[mimetype].schema! as any, value, childIterator);
}
}
} else {
requestBody.content[mimetype].__set__("schema", this.newObject(sourcePointer));
}
}
// copy extensions in requestBody
for (const { key, pointer: fieldPointer, value } of parameterItemMembers()) {
if (isExtensionKey(key)) {
if (!requestBody[key]) {
requestBody.__set__(key, { value: value, sourcePointer: fieldPointer });
}
}
}
}
}