2024-01-26 08:44:48 +03:00
using Microsoft.AspNetCore.Mvc.ApiExplorer ;
using Microsoft.Extensions.DependencyInjection ;
using Microsoft.Extensions.Options ;
using Microsoft.OpenApi.Models ;
using Swashbuckle.AspNetCore.SwaggerGen ;
using System ;
2024-05-28 06:30:42 +03:00
namespace Mirea.Api.Endpoint.Configuration.Swagger ;
2024-01-26 08:44:48 +03:00
public class ConfigureSwaggerOptions ( IApiVersionDescriptionProvider provider ) : IConfigureOptions < SwaggerGenOptions >
{
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 ;
}
}