Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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);
        }