Пример #1
0
        private Parameter CreateParameter(ApiParameterDescription paramDesc, bool inPath, SchemaRegistry schemaRegistry)
        {
            var @in = (inPath)
                ? "path"
                : (paramDesc.Source == ApiParameterSource.FromUri) ? "query" : "body";

            var parameter = new Parameter
            {
                name = paramDesc.Name,
                @in  = @in
            };

            if (paramDesc.ParameterDescriptor == null)
            {
                parameter.type     = "string";
                parameter.required = true;
                return(parameter);
            }

            parameter.required = !paramDesc.ParameterDescriptor.IsOptional;

            var schema = schemaRegistry.GetOrRegister(paramDesc.ParameterDescriptor.ParameterType);

            if (parameter.@in == "body")
            {
                parameter.schema = schema;
            }
            else
            {
                parameter.PopulateFrom(schema);
            }

            return(parameter);
        }
Пример #2
0
        private Parameter CreateParameter(string location, ApiParameterDescription paramDesc, SchemaRegistry schemaRegistry)
        {
            var parameter = new Parameter
            {
                @in  = location,
                name = paramDesc.Name
            };

            // e.g. route parameters
            if (paramDesc.ParameterDescriptor == null)
            {
                parameter.type     = "string";
                parameter.required = true;
                return(parameter);
            }

            parameter.required = location == "path" || !paramDesc.ParameterDescriptor.IsOptional;
            parameter.@default = paramDesc.ParameterDescriptor.DefaultValue;

            var schema = schemaRegistry.GetOrRegister(paramDesc.ParameterDescriptor.ParameterType);

            if (parameter.@in == "body")
            {
                parameter.schema = schema;
            }
            else
            {
                parameter.PopulateFrom(schema);
            }

            return(parameter);
        }
Пример #3
0
        private Parameter CreateParameter(
            string location,
            ApiParameterDescription paramDesc,
            SchemaRegistry schemaRegistry)
        {
            Parameter partialSchema = new Parameter()
            {
                @in  = location,
                name = paramDesc.get_Name()
            };

            if (paramDesc.get_ParameterDescriptor() == null)
            {
                partialSchema.type     = "string";
                partialSchema.required = new bool?(true);
                return(partialSchema);
            }
            partialSchema.required = new bool?(location == "path" || !paramDesc.get_ParameterDescriptor().get_IsOptional());
            partialSchema.@default = paramDesc.get_ParameterDescriptor().get_DefaultValue();
            Schema orRegister = schemaRegistry.GetOrRegister(paramDesc.get_ParameterDescriptor().get_ParameterType());

            if (partialSchema.@in == "body")
            {
                partialSchema.schema = orRegister;
            }
            else
            {
                partialSchema.PopulateFrom(orRegister);
            }
            return(partialSchema);
        }
Пример #4
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;
                return(parameter);
            }

            parameter.required = location == "path" || !paramDesc.ParameterDescriptor.IsOptional;
            parameter.@default = paramDesc.ParameterDescriptor.DefaultValue;

            var schema   = schemaRegistry.GetOrRegister(paramDesc.ParameterDescriptor.ParameterType);
            var isJToken = paramDesc.ParameterDescriptor.ParameterType.FullName.Equals("Newtonsoft.Json.Linq.JObject");

            if (parameter.@in == "body")
            {
                parameter.schema = schema;
            }
            else
            {
                parameter.PopulateFrom(schema);
            }

            return(parameter);
        }
Пример #5
0
        private Parameter CreateParameter(ApiParameterDescription paramDesc, bool inPath, SchemaRegistry schemaRegistry)
        {
            var @in = (inPath)
                ? "path"
                : (paramDesc.Source == ApiParameterSource.FromUri) ? "query" : "body";

            var parameter = new Parameter
            {
                name = paramDesc.Name,
                @in  = @in
            };

            if (paramDesc.ParameterDescriptor == null)
            {
                parameter.type     = "string";
                parameter.required = true;
                return(parameter);
            }

            parameter.required = inPath || !paramDesc.ParameterDescriptor.IsOptional;
            parameter.@default = paramDesc.ParameterDescriptor.DefaultValue;

            var schema = schemaRegistry.GetOrRegister(paramDesc.ParameterDescriptor.ParameterType);

            var reflectedDescriptor = (ReflectedHttpParameterDescriptor)paramDesc.ParameterDescriptor;

            foreach (var attribute in reflectedDescriptor.ParameterInfo.GetCustomAttributes(true))
            {
                SchemaExtensions.SetSchemaDetails(schema, attribute);
            }

            //if (paramDesc.ParameterDescriptor.ActionDescriptor != null)
            //{
            //    var actionIgnore = paramDesc.ParameterDescriptor.ActionDescriptor.GetCustomAttributes<SwaggerIgnore>();

            //    if (actionIgnore != null)
            //    {
            //        parameter.ignore = true;
            //    }
            //}

            if (parameter.@in == "body")
            {
                parameter.schema = schema;
            }
            else
            {
                parameter.PopulateFrom(schema);
            }

            return(parameter);
        }
        private void ExtractAndAddQueryParams(
            Schema sourceSchema,
            string sourceQualifier,
            bool? sourceRequired,
            SchemaRegistry schemaRegistry,
            IList<Parameter> operationParams)
        {
            foreach (var entry in sourceSchema.properties)
            {
                var propertySchema = entry.Value;
                if (propertySchema.readOnly == true) continue;

                var required = (sourceRequired == true)
                    && sourceSchema.required != null && sourceSchema.required.Contains(entry.Key);

                if (propertySchema.@ref != null)
                {
                    var schema = schemaRegistry.Definitions[[email protected]("#/definitions/", "")];

                    ExtractAndAddQueryParams(
                        schema,
                        sourceQualifier + entry.Key.ToCamelCase() + ".",
                        required,
                        schemaRegistry,
                        operationParams);
                }
                else
                {
                    var param = new Parameter
                    {
                        name = sourceQualifier + entry.Key.ToCamelCase(),
                        @in = "query",
                        required = required,
                        description = entry.Value.description,
                        example = entry.Value.example
                    };

                    param.PopulateFrom(entry.Value);
                    if (param.type == "array")
                        param.collectionFormat = "multi";
                    operationParams.Add(param);
                }
            }
        }
        private void ExtractAndAddQueryParams(
            Schema sourceSchema,
            string sourceQualifier,
            bool sourceRequired,
            SchemaRegistry schemaRegistry,
            IList<Parameter> operationParams)
        {
            foreach (var entry in sourceSchema.properties)
            {
                var propertySchema = entry.Value;
                var required = sourceRequired
                    && sourceSchema.required != null && sourceSchema.required.Contains(entry.Key); 

                if (propertySchema.@ref != null)
                {
                    var schema = schemaRegistry.Definitions[[email protected]("#/definitions/", "")];
                    ExtractAndAddQueryParams(
                        schema,
                        sourceQualifier + entry.Key.ToLowerInvariant() + ".",
                        required,
                        schemaRegistry,
                        operationParams);
                }
                else
                {
                    var param = new Parameter
                    {
                        name =  sourceQualifier + entry.Key.ToLowerInvariant(),
                        @in = "query",
                        required = required,
                        description = entry.Value.description
                    };
                    param.PopulateFrom(entry.Value);
                    operationParams.Add(param);
                }
            }
        }
Пример #8
0
        private Parameter CreateParameter(ApiParameterDescription paramDesc, bool inPath, SchemaRegistry schemaRegistry)
        {
            var @in = (inPath)
                ? "path"
                : (paramDesc.Source == ApiParameterSource.FromUri) ? "query" : "body";

            var parameter = new Parameter
            {
                name = paramDesc.Name,
                @in = @in
            };

            if (paramDesc.ParameterDescriptor == null)
            {
                parameter.type = "string";
                parameter.required = true;
                return parameter; 
            }

            parameter.required = !paramDesc.ParameterDescriptor.IsOptional;

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

            return parameter;
        }
        private static Parameter CreateParameter(SwaggerApiParameterDescription paramDesc, bool inPath, SchemaRegistry schemaRegistry, IEdmModel edmModel)
        {
            Contract.Requires(paramDesc != null);
            Contract.Requires(schemaRegistry != null);
            Contract.Assume(paramDesc.ParameterDescriptor != null);

            var @in = inPath
                ? "path"
                : MapToSwaggerParameterLocation(paramDesc.SwaggerSource);

            var parameter = new Parameter
            {
                name = paramDesc.Name,
                description = paramDesc.Documentation,
                @in = @in,
                required = inPath || !paramDesc.ParameterDescriptor.IsOptional,
                @default = paramDesc.ParameterDescriptor.DefaultValue
            };


            var parameterType = paramDesc.ParameterDescriptor.ParameterType;
            Contract.Assume(parameterType != null);
            var schema = schemaRegistry.GetOrRegisterParameterType(edmModel, paramDesc.ParameterDescriptor);
            if (parameter.@in == "body")
                parameter.schema = schema;
            else
                parameter.PopulateFrom(schema);

            return parameter;
        }
Пример #10
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;
                return parameter;
            }

            parameter.required = location == "path" || !paramDesc.ParameterDescriptor.IsOptional;
            parameter.@default = paramDesc.ParameterDescriptor.DefaultValue;

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

            return parameter;
        }
        private Parameter CreateParameter(ApiParameterDescription paramDesc, bool inPath, SchemaRegistry schemaRegistry)
        {
            var @in = (inPath)
                ? "path"
                : (paramDesc.Source == ApiParameterSource.FromUri) ? "query" : "body";

            var parameter = new Parameter
            {
                name = paramDesc.Name,
                @in = @in
            };

            if (paramDesc.ParameterDescriptor == null)
            {
                parameter.type = "string";
                parameter.required = true;
                return parameter;
            }

            parameter.required = inPath || !paramDesc.ParameterDescriptor.IsOptional;
            parameter.@default = paramDesc.ParameterDescriptor.DefaultValue;

            var schema = schemaRegistry.GetOrRegister(paramDesc.ParameterDescriptor.ParameterType);

            var reflectedDescriptor = (ReflectedHttpParameterDescriptor)paramDesc.ParameterDescriptor;
            foreach (var attribute in reflectedDescriptor.ParameterInfo.GetCustomAttributes(true))
            {
                SchemaExtensions.SetSchemaDetails(schema, attribute);
            }

            //if (paramDesc.ParameterDescriptor.ActionDescriptor != null)
            //{
            //    var actionIgnore = paramDesc.ParameterDescriptor.ActionDescriptor.GetCustomAttributes<SwaggerIgnore>();

            //    if (actionIgnore != null)
            //    {
            //        parameter.ignore = true;
            //    }
            //}

            if (parameter.@in == "body")
                parameter.schema = schema;
            else
                parameter.PopulateFrom(schema);

            return parameter;
        }