< Summary

Information
Class: Gateway.Swagger.ConfigureSwaggerOptions
Assembly: Gateway
File(s): /home/runner/work/dotnet-microservice/dotnet-microservice/Gateway/GlobalConfigurations/Swagger/ConfigureSwaggerOptions.cs
Tag: 34_11887803474
Line coverage
0%
Covered lines: 0
Uncovered lines: 42
Coverable lines: 42
Total lines: 78
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 12
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
.ctor(...)100%210%
Configure(...)0%620%
CreateInfoForApiVersion(...)0%110100%

File(s)

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

#LineLine coverage
 1using System.Text;
 2using Asp.Versioning;
 3using Asp.Versioning.ApiExplorer;
 4using Microsoft.Extensions.Options;
 5using Microsoft.OpenApi.Models;
 6using Swashbuckle.AspNetCore.SwaggerGen;
 7
 8namespace Gateway.Swagger;
 9
 010public class ConfigureSwaggerOptions(
 011    IApiVersionDescriptionProvider provider,
 012    IOptions<ServiceMetadata> serviceMetaData
 013) : IConfigureOptions<SwaggerGenOptions>
 14{
 15    private const string BreakLine = "<br />";
 16
 17    public void Configure(SwaggerGenOptions options)
 18    {
 019        foreach (var description in provider.ApiVersionDescriptions.Reverse())
 20        {
 021            options.SwaggerDoc(description.GroupName, CreateInfoForApiVersion(description));
 22        }
 023    }
 24
 25    private OpenApiInfo CreateInfoForApiVersion(ApiVersionDescription description)
 26    {
 027        var text = new StringBuilder(serviceMetaData.Value.Description);
 028        text.Append(BreakLine);
 029        text.Append($"[Link to BluePrint]({serviceMetaData.Value.BluePrintUri})");
 030        text.Append(BreakLine);
 31
 032        var info = new OpenApiInfo()
 033        {
 034            Title = serviceMetaData.Value.ServiceName,
 035            Version = description.ApiVersion.ToString(),
 036            Contact = new OpenApiContact()
 037            {
 038                Name = serviceMetaData.Value.ContactName,
 039                Email = serviceMetaData.Value.ContactEmail
 040            },
 041            License = new OpenApiLicense()
 042            {
 043                Name = serviceMetaData.Value.License,
 044                Url = serviceMetaData.Value.LicenseUri
 045            },
 046            TermsOfService = serviceMetaData.Value.TermsOfService
 047        };
 48
 049        if (description.IsDeprecated)
 50        {
 051            text.Append(BreakLine);
 052            text.Append("This API version has been deprecated.");
 53        }
 54
 055        if (description.SunsetPolicy is SunsetPolicy policy)
 56        {
 057            if (policy.Date is DateTimeOffset when)
 58            {
 059                text.Append("The API will be sunset on ")
 060                    .Append(when.Date.ToShortDateString())
 061                    .Append('.');
 62            }
 63
 064            if (policy.HasLinks)
 65            {
 066                text.Append(BreakLine);
 067                foreach (var link in policy.Links)
 68                {
 069                    text.Append($"[{link.Title}]({link.LinkTarget})");
 70                }
 71            }
 72        }
 073        text.Append(BreakLine);
 74
 075        info.Description = text.ToString();
 076        return info;
 77    }
 78}