You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.3 KiB
41 lines
1.3 KiB
using Microsoft.AspNetCore.Mvc.ApiExplorer;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Options;
|
|
using Microsoft.OpenApi.Models;
|
|
using Swashbuckle.AspNetCore.SwaggerGen;
|
|
|
|
namespace APILOL
|
|
{
|
|
public class ConfigureSwaggerGenOptions : IConfigureOptions<SwaggerGenOptions>
|
|
{
|
|
private readonly IApiVersionDescriptionProvider _apiVersionDescriptionProvider;
|
|
|
|
public ConfigureSwaggerGenOptions(IApiVersionDescriptionProvider apiVersionDescriptionProvider)
|
|
=> _apiVersionDescriptionProvider = apiVersionDescriptionProvider;
|
|
|
|
public void Configure(SwaggerGenOptions options)
|
|
{
|
|
foreach (var description in _apiVersionDescriptionProvider.ApiVersionDescriptions)
|
|
{
|
|
options.SwaggerDoc(description.GroupName, CreateOpenApiInfo(description));
|
|
}
|
|
}
|
|
|
|
private static OpenApiInfo CreateOpenApiInfo(ApiVersionDescription description)
|
|
{
|
|
var info = new OpenApiInfo()
|
|
{
|
|
Title = "LSE.Stocks.API",
|
|
Version = description.ApiVersion.ToString()
|
|
};
|
|
|
|
if (description.IsDeprecated)
|
|
{
|
|
info.Description += " (deprecated)";
|
|
}
|
|
|
|
return info;
|
|
}
|
|
}
|
|
}
|