namespace AyaNova { using Asp.Versioning.ApiExplorer; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen; using System; /// /// Configures the Swagger generation options. /// /// This allows API versioning to define a Swagger document per API version after the /// service has been resolved from the service container. public class ConfigureSwaggerOptions : IConfigureOptions { readonly IApiVersionDescriptionProvider provider; /// /// Initializes a new instance of the class. /// /// The provider used to generate Swagger documents. public ConfigureSwaggerOptions( IApiVersionDescriptionProvider provider ) => this.provider = provider; /// public void Configure( SwaggerGenOptions options ) { // add a swagger document for each discovered API version // note: you might choose to skip or document deprecated API versions differently foreach ( var description in provider.ApiVersionDescriptions ) { options.SwaggerDoc( description.GroupName, CreateInfoForApiVersion( description ) ); } } static OpenApiInfo CreateInfoForApiVersion( ApiVersionDescription description ) { var info = new OpenApiInfo() { Title = "AyaNova API", Version = description.ApiVersion.ToString(), Description = "AyaNova service management software API", }; if ( description.IsDeprecated ) { info.Description += " This API version has been deprecated."; } return info; } } }