< Summary

Information
Class: Gateway.Swagger.SwaggerDocumentation
Assembly: Gateway
File(s): /home/runner/work/dotnet-microservice/dotnet-microservice/Gateway/GlobalConfigurations/Swagger/SwaggerDocumentation.cs
Tag: 34_11887803474
Line coverage
0%
Covered lines: 0
Uncovered lines: 38
Coverable lines: 38
Total lines: 57
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
UseSwaggerDocumentation(...)0%2040%
AddSwagger(...)100%210%

File(s)

/home/runner/work/dotnet-microservice/dotnet-microservice/Gateway/GlobalConfigurations/Swagger/SwaggerDocumentation.cs

#LineLine coverage
 1using Microsoft.Extensions.Options;
 2using Swashbuckle.AspNetCore.SwaggerGen;
 3
 4namespace Gateway.Swagger;
 5
 6public static class SwaggerDocumentation
 7{
 8    public static WebApplication UseSwaggerDocumentation(this WebApplication app)
 9    {
 010        if (app.Environment.IsDevelopment())
 11        {
 012            app.UseSwagger();
 013            app.UseSwaggerUI(options =>
 014            {
 015                var serviceMetadata = app.Services.GetRequiredService<IOptions<ServiceMetadata>>();
 016                var descriptions = app.DescribeApiVersions();
 017
 018                foreach (var description in descriptions.Reverse())
 019                {
 020                    var url = $"/swagger/{description.GroupName}/swagger.json";
 021                    var name = description.GroupName.ToUpperInvariant();
 022                    options.SwaggerEndpoint(url, name);
 023                }
 024                options.EnableFilter();
 025                options.DocumentTitle = serviceMetadata.Value.ServiceName;
 026                options.EnableValidator();
 027                options.EnableDeepLinking();
 028                options.ShowCommonExtensions();
 029                options.ShowExtensions();
 030                options.DisplayOperationId();
 031                options.DisplayRequestDuration();
 032            });
 33        }
 034        return app;
 35    }
 36
 37    public static WebApplicationBuilder AddSwagger(this WebApplicationBuilder builder)
 38    {
 039        builder
 040            .Services
 041            .AddTransient<IConfigureOptions<SwaggerGenOptions>, ConfigureSwaggerOptions>();
 42
 043        builder.Services.AddSwaggerGen(o =>
 044        {
 045            o.OperationFilter<DeprecationOperationFilter>();
 046            o.UseAllOfForInheritance();
 047            o.UseAllOfToExtendReferenceSchemas();
 048            o.UseInlineDefinitionsForEnums();
 049            o.UseOneOfForPolymorphism();
 050            o.SupportNonNullableReferenceTypes();
 051            o.DescribeAllParametersInCamelCase();
 052            o.OrderActionsBy(x => x.HttpMethod);
 053        });
 54
 055        return builder;
 56    }
 57}