// namespace AyaNova // { // using Microsoft.OpenApi.Models; // using Swashbuckle.AspNetCore.SwaggerGen; // using System.Linq; // using Microsoft.AspNetCore.Authorization; // //https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases/tag/v5.0.0-rc3 // /// // /// Represents the Swagger/Swashbuckle operation filter used to document the implicit API version parameter. // /// // /// This is only required due to bugs in the . // /// Once they are fixed and published, this class can be removed. // public class SwaggerDefaultValues : IOperationFilter // { // /// // /// Applies the filter to the specified operation using the given context. // /// // /// The operation to apply the filter to. // /// The current operation filter context. // public void Apply(OpenApiOperation operation, OperationFilterContext context) // { // // REF: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/412 // // REF: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/413 // foreach (var parameter in operation.Parameters) // { // var description = context.ApiDescription.ParameterDescriptions.First(p => p.Name == parameter.Name); // var routeInfo = description.RouteInfo; // if (parameter.Description == null) // { // parameter.Description = description.ModelMetadata?.Description; // } // if (routeInfo == null) // { // continue; // } // // if (parameter.Default == null) // // { // // parameter.Default = routeInfo.DefaultValue; // // } // if (parameter.Schema.Default == null) { parameter.Schema.Default = new OpenApiString(description.DefaultValue.ToString()); } // parameter.Required |= !routeInfo.IsOptional; // } // } // } namespace AyaNova { using Microsoft.AspNetCore.Mvc.ApiExplorer; using Microsoft.OpenApi.Any; using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen; using System.Linq; /// /// Represents the Swagger/Swashbuckle operation filter used to document the implicit API version parameter. /// /// This is only required due to bugs in the . /// Once they are fixed and published, this class can be removed. public class SwaggerDefaultValues : IOperationFilter { /// /// Applies the filter to the specified operation using the given context. /// /// The operation to apply the filter to. /// The current operation filter context. public void Apply(OpenApiOperation operation, OperationFilterContext context) { var apiDescription = context.ApiDescription; operation.Deprecated |= apiDescription.IsDeprecated(); if (operation.Parameters == null) { return; } // REF: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/412 // REF: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/413 foreach (var parameter in operation.Parameters) { var description = apiDescription.ParameterDescriptions.First(p => p.Name == parameter.Name); if (parameter.Description == null) { parameter.Description = description.ModelMetadata?.Description; } if (parameter.Schema.Default == null && description.DefaultValue != null) { parameter.Schema.Default = new OpenApiString(description.DefaultValue.ToString()); } parameter.Required |= description.IsRequired; } } } } // public void ConfigureServices(IServiceCollection services) // { // #region Swagger // services // .AddApiVersioning(options => // { // options.AssumeDefaultVersionWhenUnspecified = true; // options.DefaultApiVersion = Microsoft.AspNetCore.Mvc.ApiVersion.Parse("8.0"); // options.ReportApiVersions = true; // }); // services.AddVersionedApiExplorer(o => o.GroupNameFormat = "'v'VVV"); // services.AddTransient, ConfigureSwaggerOptions>(); // services.AddSwaggerGen( // c => // { // c.OperationFilter(); // }); // #endregion