in libs/logic-apps-shared/src/parsers/lib/swagger/parameterprocessor.ts [107:209]
private _getParameters(parameter: Parameter, keyProjectionOption: KeyProjectionOptions = {}): InputParameter[] {
const { in: location, schema, required } = parameter;
let type = parameter.type;
switch (location) {
case Constants.ParameterLocations.Body: {
type = parameter.schema.type;
switch (type) {
case Constants.Types.Array: {
const processor = new SchemaProcessor({
prefix: parameter.name ? encodePropertySegment(parameter.name) : undefined,
isInputSchema: true,
expandArrayOutputs: !!this.options.expandArray,
expandArrayOutputsDepth: this.options.expandArrayDepth,
keyPrefix: create(this._getMergedKeySegments(location, keyProjectionOption)),
excludeAdvanced: this.options.excludeAdvanced,
excludeInternal: this.options.excludeInternal,
includeParentObject: this.options.includeParentObject,
parentProperty: {
visibility: parameter[Constants.ExtensionProperties.Visibility],
},
required,
isNested: false,
});
const inputs = processor.getSchemaProperties(schema);
return inputs.map((item) => ({ ...toInputParameter(item), in: location }));
}
case Constants.Types.Boolean:
case Constants.Types.Integer:
case Constants.Types.Null:
case Constants.Types.Number:
case Constants.Types.String:
return [this._getParameterFromSchema(parameter, keyProjectionOption)];
case Constants.Types.Object: {
const hasDynamicSchema = schema[Constants.ExtensionProperties.DynamicSchema];
let parameters: InputParameter[] = [];
if (Object.keys(schema.properties || {}).length || hasDynamicSchema) {
const processor = new SchemaProcessor({
prefix: hasDynamicSchema ? encodePropertySegment(parameter.name) : undefined,
keyPrefix: create(this._getMergedKeySegments(location, keyProjectionOption)),
isInputSchema: true,
expandArrayOutputs: !!this.options.expandArray,
expandArrayOutputsDepth: this.options.expandArrayDepth,
required: parameter.required,
excludeAdvanced: this.options.excludeAdvanced,
excludeInternal: this.options.excludeInternal,
includeParentObject: this.options.includeParentObject,
});
const schemaProperties = processor.getSchemaProperties(schema);
parameters = schemaProperties.map((schemaProperty) => ({ ...toInputParameter(schemaProperty), in: location }));
}
return parameters.length ? parameters : [this._getParameterFromSchema(parameter, keyProjectionOption)];
}
default:
return [{ ...this._getParameterFromSchema(parameter, keyProjectionOption), type: Constants.Types.Any }];
}
}
case Constants.ParameterLocations.FormData:
switch (type) {
case Constants.Types.Boolean:
case Constants.Types.Integer:
case Constants.Types.Number:
case Constants.Types.String:
return [
this._getScalarParameter(
parameter,
create(this._getMergedKeySegments(location, keyProjectionOption, parameter.name)),
keyProjectionOption
),
];
case Constants.Types.File:
return this._getFileParameters(parameter, keyProjectionOption);
default:
return [];
}
case Constants.ParameterLocations.Header:
case Constants.ParameterLocations.Path:
case Constants.ParameterLocations.Query:
switch (type) {
case Constants.Types.Array:
case Constants.Types.Boolean:
case Constants.Types.File:
case Constants.Types.Integer:
case Constants.Types.Number:
case Constants.Types.String:
return [this._getScalarParameter(parameter, /* key */ undefined, keyProjectionOption)];
default:
return [];
}
default:
return [];
}
}