All checks were successful
Build and Deploy Docker Container / build-and-deploy (push) Successful in 4m33s
37 lines
3.2 KiB
C#
37 lines
3.2 KiB
C#
using Asp.Versioning.ApiExplorer;
|
||
using Microsoft.Extensions.DependencyInjection;
|
||
using Microsoft.Extensions.Options;
|
||
using Microsoft.OpenApi;
|
||
using Swashbuckle.AspNetCore.SwaggerGen;
|
||
using System;
|
||
using System.Diagnostics;
|
||
using System.Reflection;
|
||
|
||
namespace Mirea.Api.Endpoint.Configuration.SwaggerOptions;
|
||
|
||
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 ({FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion})",
|
||
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;
|
||
}
|
||
} |