All checks were successful
Build and Deploy Docker Container / build-and-deploy (push) Successful in 4m33s
67 lines
5.0 KiB
C#
67 lines
5.0 KiB
C#
using Asp.Versioning.ApiExplorer;
|
||
using Microsoft.AspNetCore.Builder;
|
||
using Microsoft.Extensions.DependencyInjection;
|
||
using Microsoft.Extensions.Options;
|
||
using Microsoft.OpenApi;
|
||
using Mirea.Api.Endpoint.Common.Services;
|
||
using Mirea.Api.Endpoint.Configuration.SwaggerOptions;
|
||
using Swashbuckle.AspNetCore.SwaggerGen;
|
||
using System;
|
||
using System.IO;
|
||
|
||
namespace Mirea.Api.Endpoint.Configuration.Core.Startup;
|
||
|
||
public static class SwaggerConfiguration
|
||
{
|
||
public static IServiceCollection AddCustomSwagger(this IServiceCollection services)
|
||
{
|
||
services.AddSwaggerGen(options =>
|
||
{
|
||
var basePath = AppDomain.CurrentDomain.BaseDirectory;
|
||
|
||
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
|
||
{
|
||
In = ParameterLocation.Header,
|
||
Description = "Keep the JWT token in the field (Bearer token)",
|
||
Name = "Authorization",
|
||
Type = SecuritySchemeType.Http
|
||
});
|
||
|
||
options.AddSecurityRequirement(document =>
|
||
{
|
||
var reference = new OpenApiSecuritySchemeReference("Bearer");
|
||
|
||
return new OpenApiSecurityRequirement
|
||
{
|
||
{ reference, [] }
|
||
};
|
||
});
|
||
|
||
if (File.Exists(Path.Combine(basePath, "docs.xml")))
|
||
options.IncludeXmlComments(Path.Combine(basePath, "docs.xml"));
|
||
|
||
if (File.Exists(Path.Combine(basePath, "ApiDtoDocs.xml")))
|
||
options.IncludeXmlComments(Path.Combine(basePath, "ApiDtoDocs.xml"));
|
||
});
|
||
|
||
return services.AddTransient<IConfigureOptions<SwaggerGenOptions>, ConfigureSwaggerOptions>();
|
||
}
|
||
|
||
public static IApplicationBuilder UseCustomSwagger(this IApplicationBuilder app, IServiceProvider services)
|
||
{
|
||
app.UseSwagger();
|
||
return app.UseSwaggerUI(options =>
|
||
{
|
||
options.InjectStylesheet($"{UrlHelper.GetSubPath}css/swagger/SwaggerDark.css");
|
||
var provider = services.GetService<IApiVersionDescriptionProvider>();
|
||
|
||
foreach (var description in provider!.ApiVersionDescriptions)
|
||
{
|
||
var url = $"/swagger/{description.GroupName}/swagger.json";
|
||
var name = description.GroupName.ToUpperInvariant();
|
||
options.SwaggerEndpoint(url, name);
|
||
options.RoutePrefix = UrlHelper.GetSubPathSwagger.Trim('/');
|
||
}
|
||
});
|
||
}
|
||
} |