Exemplo n.º 1
0
        private Parameter CreateParameter(string location, ApiParameterDescription paramDesc, SchemaRegistry schemaRegistry)
        {
            var parameter = new Parameter
            {
                @in  = location,
                name = paramDesc.Name,
            };

            if (paramDesc.ParameterDescriptor == null)
            {
                parameter.type     = "string";
                parameter.required = true;
            }
            else
            {
                parameter.pattern     = paramDesc.GetRegularExpressionAttribute()?.Pattern;
                parameter.required    = location == "path" || !paramDesc.ParameterDescriptor.IsOptional;
                parameter.description = paramDesc.Documentation;
                if (parameter.description == null)
                {
                    parameter.description = paramDesc.GetDescriptionAttribute()?.Description;
                }

                var schema = schemaRegistry.GetOrRegister(paramDesc.ParameterDescriptor.ParameterType);
                if (parameter.@in == "body")
                {
                    parameter.schema = schema;
                }
                else
                {
                    parameter.PopulateFrom(schema);
                }

                if (paramDesc.ParameterDescriptor.DefaultValue != null)
                {
                    if (parameter.@enum != null && [email protected] > 0 && _options.DescribeAllEnumsAsStrings)
                    {
                        parameter.@default = paramDesc.ParameterDescriptor.DefaultValue.ToString();
                    }
                    else
                    {
                        parameter.@default = paramDesc.ParameterDescriptor.DefaultValue;
                    }
                }
            }
            return(parameter);
        }