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; // } parameter.Required |= !routeInfo.IsOptional; } } } // AuthResponsesOperationFilter.cs public class AuthResponsesOperationFilter : IOperationFilter { public void Apply(OpenApiOperation operation, OperationFilterContext context) { var authAttributes = context.MethodInfo.DeclaringType.GetCustomAttributes(true) .Union(context.MethodInfo.GetCustomAttributes(true)) .OfType(); if (authAttributes.Any()) operation.Responses.Add("401", new OpenApiResponse { Description = "Unauthorized" }); } } }