private static ParameterAllowableValues GetAllowableValue(ApiAllowableValuesAttribute attr)
 {
     if (attr != null)
     {
         return new ParameterAllowableValues()
         {
             ValueType = attr.Type,
             Values = attr.Values,
             Max = attr.Max,
             Min = attr.Min
         };
     }
     return null;
 }
Beispiel #2
0
 private static List <string> GetEnumValues(ApiAllowableValuesAttribute attr)
 {
     return(attr?.Values?.ToList());
 }
Beispiel #3
0
        private OpenApiParameter GetListParameter(IDictionary <string, OpenApiSchema> schemas, Type listType, string route, string verb, string paramName, string paramIn, ApiAllowableValuesAttribute allowableValueAttrs = null)
        {
            if (!IsListType(listType))
            {
                return(null);
            }

            var parameter = new OpenApiParameter
            {
                Type             = OpenApiType.Array,
                CollectionFormat = "multi",
                Description      = listType.GetDescription(),
                Name             = paramName,
                In       = paramIn,
                Required = paramIn == "path"
            };

            var listItemType = GetListElementType(listType);

            ParseDefinitions(schemas, listItemType, route, verb);
            parameter.Items = GetOpenApiListItems(listItemType, route, verb, allowableValueAttrs);

            return(parameter);
        }
Beispiel #4
0
        private Dictionary <string, object> GetOpenApiListItems(Type listItemType, string route, string verb, ApiAllowableValuesAttribute allowableValueAttrs = null)
        {
            var items = new Dictionary <string, object>();

            if (IsSwaggerScalarType(listItemType))
            {
                items.Add("type", GetSwaggerTypeName(listItemType));
                items.Add("format", GetSwaggerTypeFormat(listItemType, route, verb));
                if (IsRequiredType(listItemType))
                {
                    items.Add("x-nullable", false);
                }
                var enumValues = GetEnumValues(allowableValueAttrs);
                if (enumValues?.Count > 0)
                {
                    items.Add("enum", enumValues);
                }
            }
            else
            {
                items.Add("$ref", "#/definitions/" + GetSchemaTypeName(listItemType));
            }

            return(items);
        }
Beispiel #5
0
        private OpenApiParameter GetParameter(IDictionary <string, OpenApiSchema> schemas, Type schemaType, string route, string verb, string paramName, string paramIn, ApiAllowableValuesAttribute allowableValueAttrs = null, bool isApiMember = false)
        {
            //Compatibility: replace old Swagger ParamType to new Open API
            if (paramIn == "form")
            {
                paramIn = "formData";
            }

            if (IsSwaggerScalarType(schemaType))
            {
                return(new OpenApiParameter
                {
                    In = paramIn,
                    Name = paramName,
                    Type = GetSwaggerTypeName(schemaType),
                    Format = GetSwaggerTypeFormat(schemaType, route, verb),
                    Enum = GetEnumValues(allowableValueAttrs),
                    Nullable = IsRequiredType(schemaType) ? false : (bool?)null,
                    Required = paramIn == "path" ? true : (bool?)null
                });
            }

            if (paramIn != "body" && !isApiMember)
            {
                return(new OpenApiParameter
                {
                    In = paramIn,
                    Name = paramName,
                    Type = OpenApiType.String,
                    Required = paramIn == "path" ? true : (bool?)null
                });
            }

            if (IsDictionaryType(schemaType))
            {
                return(new OpenApiParameter
                {
                    In = paramIn,
                    Name = paramName,
                    Schema = GetDictionarySchema(schemas, schemaType, route, verb)
                });
            }

            if (IsListType(schemaType))
            {
                return(GetListParameter(schemas, schemaType, route, verb, paramName, paramIn, allowableValueAttrs));
            }

            return(new OpenApiParameter
            {
                In = paramIn,
                Name = paramName,
                Schema = new OpenApiSchema {
                    Ref = "#/definitions/" + GetSchemaTypeName(schemaType)
                }
            });
        }