Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
&& result.content["application/x-www-form-urlencoded"] && result.content["application/x-www-form-urlencoded"].schema && result.content["application/x-www-form-urlencoded"].schema.properties) {
op.requestBody.content["application/x-www-form-urlencoded"].schema.properties =
Object.assign(op.requestBody.content["application/x-www-form-urlencoded"].schema.properties, result.content["application/x-www-form-urlencoded"].schema.properties);
op.requestBody.content["application/x-www-form-urlencoded"].schema.required = (op.requestBody.content["application/x-www-form-urlencoded"].schema.required || []).concat(result.content["application/x-www-form-urlencoded"].schema.required||[]);
if (!op.requestBody.content["application/x-www-form-urlencoded"].schema.required.length) {
delete op.requestBody.content["application/x-www-form-urlencoded"].schema.required;
}
}
else {
op.requestBody = Object.assign(op.requestBody, result);
if (!op.requestBody['x-s2o-name']) {
if (op.requestBody.schema && op.requestBody.schema.$ref) {
op.requestBody['x-s2o-name'] = decodeURIComponent(op.requestBody.schema.$ref.replace('#/components/schemas/', '')).split('/').join('');
}
else if (op.operationId) {
op.requestBody['x-s2o-name'] = common.sanitiseAll(op.operationId);
}
}
}
}
}
}
// tidy up
if (param && !param['x-s2o-delete']) {
delete param.type;
for (let prop of common.parameterTypeProperties) {
delete param[prop];
}
if ((param.in === 'path') && ((typeof param.required === 'undefined') || (param.required !== true))) {
if (options.patch) {
copyExtensions(param, target);
}
}
else if (param && param.type === 'file') {
// convert to requestBody
if (param.required) result.required = param.required;
result.content = {};
result.content["application/octet-stream"] = {};
result.content["application/octet-stream"].schema = {};
result.content["application/octet-stream"].schema.type = 'string';
result.content["application/octet-stream"].schema.format = 'binary';
copyExtensions(param, result);
}
if (param && param.in === 'body') {
result.content = {};
if (param.name) result['x-s2o-name'] = (op && op.operationId ? common.sanitiseAll(op.operationId) : '') + ('_' + param.name).toCamelCase();
if (param.description) result.description = param.description;
if (param.required) result.required = param.required;
// Set the "request body name" extension on the operation if requested.
if (op && options.rbname && param.name) {
op[options.rbname] = param.name;
}
if (param.schema && param.schema.$ref) {
result['x-s2o-name'] = decodeURIComponent(param.schema.$ref.replace('#/components/schemas/', ''));
}
else if (param.schema && (param.schema.type === 'array') && param.schema.items && param.schema.items.$ref) {
result['x-s2o-name'] = decodeURIComponent(param.schema.items.$ref.replace('#/components/schemas/', '')) + 'Array';
}
if (!consumes.length) {
consumes.push('application/json'); // TODO verify default
if (openapi.security) processSecurity(openapi.security);
for (let s in openapi.components.securitySchemes) {
let sname = common.sanitise(s);
if (s != sname) {
if (openapi.components.securitySchemes[sname]) {
throwError('Duplicate sanitised securityScheme name ' + sname, options);
}
openapi.components.securitySchemes[sname] = openapi.components.securitySchemes[s];
delete openapi.components.securitySchemes[s];
}
processSecurityScheme(openapi.components.securitySchemes[sname], options);
}
for (let s in openapi.components.schemas) {
let sname = common.sanitiseAll(s);
let suffix = '';
if (s != sname) {
while (openapi.components.schemas[sname + suffix]) {
// @ts-ignore
suffix = (suffix ? ++suffix : 2);
}
openapi.components.schemas[sname + suffix] = openapi.components.schemas[s];
delete openapi.components.schemas[s];
}
componentNames.schemas[s] = sname + suffix;
fixUpSchema(openapi.components.schemas[sname+suffix],options)
}
// fix all $refs to their new locations (and potentially new names)
options.refmap = {};
recurse(openapi, { payload: { options: options } }, fixupRefs);
}
}
if (options.debug) {
op["x-s2o-consumes"] = op.consumes || [];
op["x-s2o-produces"] = op.produces || [];
}
if (op) {
delete op.consumes;
delete op.produces;
delete op.schemes;
if (op["x-ms-examples"]) {
for (let e in op["x-ms-examples"]) {
let example = op["x-ms-examples"][e];
let se = common.sanitiseAll(e);
if (example.parameters) {
for (let p in example.parameters) {
let value = example.parameters[p];
for (let param of (op.parameters||[]).concat(path.parameters||[])) {
if (param.$ref) {
param = jptr.jptr(openapi,param.$ref);
}
if ((param.name === p) && (!param.example)) {
if (!param.examples) {
param.examples = {};
}
param.examples[e] = {value: value};
}
}
}
}
contentType.examples = {};
}
contentType.examples[e] = { $ref: '#/components/examples/'+se };
}
}
}
}
}
}
delete op["x-ms-examples"];
}
if (op.parameters && op.parameters.length === 0) delete op.parameters;
if (op.requestBody) {
let effectiveOperationId = op.operationId ? common.sanitiseAll(op.operationId) : common.sanitiseAll(method + p).toCamelCase();
let rbName = common.sanitise(op.requestBody['x-s2o-name'] || effectiveOperationId || '');
delete op.requestBody['x-s2o-name'];
let rbStr = JSON.stringify(op.requestBody);
let rbHash = common.hash(rbStr);
if (!requestBodyCache[rbHash]) {
let entry = {};
entry.name = rbName;
entry.body = op.requestBody;
entry.refs = [];
requestBodyCache[rbHash] = entry;
}
let ptr = '#/'+containerName+'/'+encodeURIComponent(jptr.jpescape(p))+'/'+method+'/requestBody';
requestBodyCache[rbHash].refs.push(ptr);
}
}