private Operation CreateOperation(ApiDescription apiDescription, SchemaRegistry schemaRegistry) { var parameters = apiDescription.ParameterDescriptions .Select(paramDesc => { var inPath = apiDescription.RelativePathSansQueryString().Contains("{" + paramDesc.Name + "}"); return(CreateParameter(paramDesc, inPath, schemaRegistry)); }) .ToList(); //parameters.Add(new Parameter() //{ // @in = "header", // description = "Custom header values", // ignore = false, // name = "SomeHeaderValue", // schema = new Schema() // { // type = "array", // // items = new Schema() { type = "string" } // } //}); var responses = new Dictionary <string, Response>(); var responseType = apiDescription.ResponseType(); if (responseType == null || responseType == typeof(void)) { responses.Add("204", new Response { description = "No Content" }); } else { responses.Add("200", new Response { description = "OK", schema = schemaRegistry.GetOrRegister(responseType) }); } var operation = new Operation { tags = new[] { _options.GroupingKeySelector(apiDescription) }, operationId = apiDescription.FriendlyId(), // customRouteName = apiDescription.GetSwaggerRouteName(), produces = apiDescription.Produces().ToList(), consumes = apiDescription.Consumes().ToList(), parameters = parameters.Any() ? parameters : null, // parameters can be null but not empty responses = responses, deprecated = apiDescription.IsObsolete() }; foreach (var filter in _options.OperationFilters) { filter.Apply(operation, schemaRegistry, apiDescription); } return(operation); }
private Operation CreateOperation(ApiDescription apiDescription, SchemaRegistry schemaRegistry) { Contract.Requires(apiDescription != null); Contract.Requires(schemaRegistry != null); Contract.Requires(apiDescription.ParameterDescriptions != null); var edmModel = ((ODataRoute)apiDescription.Route).GetEdmModel(); var parameters = apiDescription.ParameterDescriptions .Select(paramDesc => { var inPath = apiDescription.RelativePathSansQueryString().Contains("{" + paramDesc.Name + "}"); var swaggerApiParameterDescription = paramDesc as SwaggerApiParameterDescription; return(swaggerApiParameterDescription != null ? CreateParameter(swaggerApiParameterDescription, inPath, schemaRegistry, edmModel) : CreateParameter(paramDesc, inPath, schemaRegistry, edmModel)); }) .ToList(); var responses = new Dictionary <string, Response>(); var responseType = apiDescription.ResponseType(); if (responseType == null || responseType == typeof(void)) { responses.Add("204", new Response { description = "No Content" }); } else { responses.Add("200", new Response { description = "OK", schema = schemaRegistry.GetOrRegisterResponseType(edmModel, responseType) }); } var operation = new Operation { summary = apiDescription.Documentation, tags = new[] { _config.GetSwashbuckleOptions().GroupingKeySelector(apiDescription) }, operationId = apiDescription.OperationId(), produces = apiDescription.Produces()?.ToList(), consumes = apiDescription.Consumes()?.ToList(), parameters = parameters.Any() ? parameters : null, // parameters can be null but not empty responses = responses, deprecated = apiDescription.IsObsolete() }; foreach (var filter in _config.GetSwashbuckleOptions().OperationFilters) { Contract.Assume(filter != null); filter.Apply(operation, schemaRegistry, apiDescription); } return(operation); }
private Operation CreateOperation(ApiDescription apiDesc, SchemaRegistry schemaRegistry, float apiVersion) { var parameters = apiDesc.ParameterDescriptions .Select(paramDesc => { string location = GetParameterLocation(apiDesc, paramDesc); return CreateParameter(location, paramDesc, schemaRegistry); }) .ToList(); var responses = new Dictionary<string, Response>(); var responseType = apiDesc.ResponseType(); if (responseType == null || responseType == typeof(void)) responses.Add("204", new Response { description = "No Content" }); else responses.Add("200", new Response { description = "OK", schema = schemaRegistry.GetOrRegister(responseType) }); var operation = new Operation { tags = new[] { _options.GroupingKeySelector(apiDesc) }, operationId = apiDesc.FriendlyId(), produces = apiDesc.Produces().ToList(), consumes = apiDesc.Consumes().ToList(), parameters = parameters.Any() ? parameters : new List<Parameter>(), // parameters can be null but not empty responses = responses, deprecated = apiDesc.IsObsolete() ? true : (bool?)null }; if (apiVersion>2) { operation.parameters.Insert(0, new Parameter { name = "JWT", @in = "header", description = "Json Web Token", required = false, type = "string" }); } else { //appInfo控制器排除 if (apiDesc.ActionDescriptor.ControllerDescriptor.ControllerName!=nameof(Controllers.v1.AppInfoController)) { operation.parameters.Insert(0, new Parameter { name = "AppKey", @in = "header", description = "客户端标识", required = false, type = "string" }); operation.parameters.Insert(1, new Parameter { name = "Sign", @in = "header", description = "签名", required = false, type = "string" }); } } foreach (var filter in _options.OperationFilters) { filter.Apply(operation, schemaRegistry, apiDesc); } return operation; }
private Operation CreateOperation(ApiDescription apiDesc, SchemaRegistry schemaRegistry) { var parameters = apiDesc.ParameterDescriptions .Where(paramDesc => { var paramDescriptor = paramDesc.ParameterDescriptor; return(paramDescriptor == null || paramDescriptor.ParameterType != typeof(CancellationToken)); }) .Select(paramDesc => { string location = GetParameterLocation(apiDesc, paramDesc); return(CreateParameter(location, paramDesc, schemaRegistry)); }) .ToList(); var responses = new Dictionary <string, Response>(); var responseType = apiDesc.ResponseType(); if (responseType == null || responseType == typeof(void)) { responses.Add("204", new Response { description = "No Content" }); } else { responses.Add("200", new Response { description = "OK", schema = schemaRegistry.GetOrRegister(responseType) }); } var operation = new Operation { tags = new[] { _options.GroupingKeySelector(apiDesc) }, operationId = apiDesc.FriendlyId(), produces = apiDesc.Produces().ToList(), consumes = apiDesc.Consumes().ToList(), parameters = parameters.Any() ? parameters : null, // parameters can be null but not empty responses = responses, deprecated = apiDesc.IsObsolete() ? true : (bool?)null }; foreach (var filter in _options.OperationFilters) { filter.Apply(operation, schemaRegistry, apiDesc); } return(operation); }
private Operation CreateOperation(ApiDescription apiDescription, SchemaRegistry schemaRegistry) { var parameters = apiDescription.ParameterDescriptions .Select(paramDesc => { var inPath = apiDescription.RelativePathSansQueryString().Contains("{" + paramDesc.Name + "}"); return(CreateParameter(paramDesc, inPath, schemaRegistry)); }) .ToList(); var responses = new Dictionary <string, Response>(); var responseType = apiDescription.ResponseType(); if (responseType == null) { responses.Add("204", new Response { description = "No Content" }); } else { responses.Add("200", new Response { description = "OK", schema = schemaRegistry.GetOrRegister(responseType) }); } var operation = new Operation { tags = new [] { _options.GroupingKeySelector(apiDescription) }, operationId = apiDescription.FriendlyId(), produces = apiDescription.Produces().ToList(), consumes = apiDescription.Consumes().ToList(), parameters = parameters.Any() ? parameters : null, // parameters can be null but not empty responses = responses, deprecated = apiDescription.IsObsolete() }; foreach (var filter in _options.OperationFilters) { filter.Apply(operation, schemaRegistry, apiDescription); } return(operation); }
private Operation CreateOperation( ApiDescription apiDesc, SchemaRegistry schemaRegistry) { List <Parameter> list = ((IEnumerable <ApiParameterDescription>)apiDesc.get_ParameterDescriptions()).Select <ApiParameterDescription, Parameter>((Func <ApiParameterDescription, Parameter>)(paramDesc => this.CreateParameter(this.GetParameterLocation(apiDesc, paramDesc), paramDesc, schemaRegistry))).ToList <Parameter>(); Dictionary <string, Response> dictionary = new Dictionary <string, Response>(); Type type = apiDesc.ResponseType(); if (type == (Type)null || type == typeof(void)) { dictionary.Add("204", new Response() { description = "No Content" }); } else { dictionary.Add("200", new Response() { description = "OK", schema = schemaRegistry.GetOrRegister(type) }); } Operation operation = new Operation() { tags = (IList <string>) new string[1] { this._options.GroupingKeySelector(apiDesc) }, operationId = apiDesc.FriendlyId(), produces = (IList <string>)apiDesc.Produces().ToList <string>(), consumes = (IList <string>)apiDesc.Consumes().ToList <string>(), parameters = list.Any <Parameter>() ? (IList <Parameter>)list : (IList <Parameter>)null, responses = (IDictionary <string, Response>)dictionary, deprecated = apiDesc.IsObsolete() ? new bool?(true) : new bool?() }; foreach (IOperationFilter operationFilter in this._options.OperationFilters) { operationFilter.Apply(operation, schemaRegistry, apiDesc); } return(operation); }
private Operation CreateOperation(ApiDescription apiDesc) { // Parameter var param = apiDesc.ParameterDescriptions.Select(paramDesc => { string location = GetParameterLocation(apiDesc, paramDesc); return(CreateParameter(location, paramDesc)); }) .ToList(); var operation = new Operation { produces = apiDesc.Produces().ToList(), consumes = apiDesc.Consumes().ToList(), operationId = apiDesc.GetFriendlyId(), parameters = param, deprecated = apiDesc.IsObsolete()?true:false }; return(operation); }
private Operation CreateOperation(ApiDescription apiDesc, SchemaRegistry schemaRegistry, HashSet <string> operationNames) { var parameters = apiDesc.ParameterDescriptions .Select(paramDesc => { string location = GetParameterLocation(apiDesc, paramDesc); return(CreateParameter(location, paramDesc, schemaRegistry)); }) .ToList(); var description = apiDesc.ActionDescriptor.GetCustomAttributes <SwaggerDescriptionAttribute>() .FirstOrDefault(); var responses = new Dictionary <string, Response>(); var responseType = apiDesc.ResponseType(); if (responseType == null || responseType == typeof(void)) { responses.Add("204", new Response { description = "No Content" }); } else { responses.Add("200", new Response { description = "OK", schema = schemaRegistry.GetOrRegister(responseType) }); } var operation = new Operation { tags = new[] { _options.GroupingKeySelector(apiDesc) }, operationId = this.GetUniqueOperationId(apiDesc, operationNames), description = description?.Description, summary = description?.Summary, produces = apiDesc.Produces().ToList(), consumes = apiDesc.Consumes().ToList(), parameters = parameters.Any() ? parameters : null, // parameters can be null but not empty responses = responses, }; if (apiDesc.IsObsolete()) { operation.deprecated = true; var message = apiDesc.ObsoleteMessage(); if (!string.IsNullOrEmpty(message)) { if (operation.summary == null) { operation.summary = message; } else if (operation.description == null) { operation.description = message; } } } foreach (var filter in _options.OperationFilters) { filter.Apply(operation, schemaRegistry, apiDesc); } return(operation); }