using Microsoft.AspNetCore.Mvc.ApiExplorer; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen; using System; namespace Mirea.Api.Endpoint.Configuration.Swagger; public class ConfigureSwaggerOptions(IApiVersionDescriptionProvider provider) : IConfigureOptions { public void Configure(SwaggerGenOptions options) { foreach (var description in provider.ApiVersionDescriptions) { options.SwaggerDoc(description.GroupName, CreateInfoForApiVersion(description)); } } private static OpenApiInfo CreateInfoForApiVersion(ApiVersionDescription description) { var info = new OpenApiInfo() { Title = "MIREA Schedule Web API", Version = description.ApiVersion.ToString(), Description = "This API provides a convenient interface for retrieving data stored in the database. Special attention was paid to the lightweight and easy transfer of all necessary data. Made by the Winsomnia team.", Contact = new OpenApiContact { Name = "Author name", Email = "support@winsomnia.net" }, License = new OpenApiLicense { Name = "MIT", Url = new Uri("https://opensource.org/licenses/MIT") } }; if (description.IsDeprecated) info.Description += " This API version has been deprecated."; return info; } }