public static Parameter ToParameter(this SwaggerParameterData parameterData) { var parameter = parameterData.ParameterModel.ToDataType <Parameter>(); parameter.Name = parameterData.Name; parameter.ParamType = parameterData.ParamType; parameter.Description = parameterData.Description; parameter.DefaultValue = parameterData.DefaultValue; var paramType = parameter.ParamType; // 5.2.4 Parameter Object: If paramType is "path" then this field MUST be included and have the value true. if (paramType == ParameterType.Path) { parameter.Required = true; } else { parameter.Required = parameterData.Required || parameterData.ParameterModel.IsImplicitlyRequired() ? true : (bool?)null; } // 5.2.4 Parameter Object: The field may be used only if paramType is "query", "header" or "path". if (paramType == ParameterType.Query || paramType == ParameterType.Header || paramType == ParameterType.Path) { parameter.AllowMultiple = parameterData.ParameterModel.IsContainer() ? true : (bool?)null; } // 5.2.4 Parameter Object: If paramType is "body", the name is used only for // Swagger-UI and Swagger-Codegen. In this case, the name MUST be "body". if (paramType == ParameterType.Body) { parameter.Name = "body"; } // 5.2.4 Parameter Object: Type field MUST be used to link to other models. if (parameterData.ParameterModel.IsContainer()) { parameter.Type = parameter.Items.Type; parameter.Format = parameter.Items.Format; parameter.Items = null; } else { parameter.Type = parameter.Type ?? parameter.Ref; parameter.Ref = null; } return(parameter); }
/// <summary> /// Specify a parameter for the operation. /// </summary> /// <param name="paramType">The <see cref="ParameterType"/> of the parameter.</param> /// <param name="name">The name of the parameter.</param> /// <param name="description">The description of the parameter.</param> /// <param name="required">A <see cref="Boolean"/> value indicating whether the parameter is required. The default is <c>false</c>.</param> /// <param name="defaultValue">The default value to be used for the field.</param> /// <returns>The <see cref="SwaggerRouteDataBuilder"/> instance.</returns> public SwaggerRouteDataBuilder Param <T>( ParameterType paramType, string name, string description = null, bool required = false, T defaultValue = default(T)) { var param = new SwaggerParameterData { Name = name, ParamType = paramType, Description = description, Required = required, DefaultValue = defaultValue, ParameterModel = typeof(T) }; Data.OperationParameters.Add(param); return(this); }