From a93ce72aae62ca5b0660543fe464505c7ae6c982 Mon Sep 17 00:00:00 2001 From: Jesse Kela Date: Wed, 20 Nov 2024 16:34:51 +0200 Subject: [PATCH] Move to using Scalar --- App/Api/Api.csproj | 2 +- App/Api/Setup/Middleware.cs | 22 +++++--------- App/Api/Setup/Services.cs | 3 +- App/Api/Setup/Swagger.cs | 34 ---------------------- App/Api/wwwroot/swagger-ui/index.html | 19 ------------ App/Directory.Packages.props | 2 +- Tests/IntegrationTests/IntegrationTests.cs | 4 +-- 7 files changed, 12 insertions(+), 74 deletions(-) delete mode 100644 App/Api/Setup/Swagger.cs delete mode 100644 App/Api/wwwroot/swagger-ui/index.html diff --git a/App/Api/Api.csproj b/App/Api/Api.csproj index 9b9a4e5..4a463dd 100644 --- a/App/Api/Api.csproj +++ b/App/Api/Api.csproj @@ -3,9 +3,9 @@ + - diff --git a/App/Api/Setup/Middleware.cs b/App/Api/Setup/Middleware.cs index a6d0f6a..9718e1d 100644 --- a/App/Api/Setup/Middleware.cs +++ b/App/Api/Setup/Middleware.cs @@ -1,3 +1,5 @@ +using Scalar.AspNetCore; + public static class Middleware { public static void ConfigureMiddleware(this WebApplication app) @@ -13,21 +15,12 @@ public static void ConfigureMiddleware(this WebApplication app) app.UseOutputCache(); - app.UseStaticFiles(); - - app.UseSwagger(); - app.UseSwaggerUI(opt => + app.MapOpenApi(); + app.MapScalarApiReference(opt => { - var descriptions = app.DescribeApiVersions(); - foreach (var desc in descriptions) - { - var url = $"/swagger/{desc.GroupName}/swagger.json"; - var name = desc.GroupName.ToUpperInvariant(); - opt.SwaggerEndpoint(url, name); - } - opt.RoutePrefix = string.Empty; - var indexPath = Path.Combine(env.WebRootPath, "swagger-ui", "index.html"); - opt.IndexStream = () => new FileStream(indexPath, FileMode.Open, FileAccess.Read); + opt.Title = "Bitcoin Web API"; + opt.ShowSidebar = true; + opt.DarkMode = true; }); app.MapHealthChecks("health"); @@ -41,7 +34,6 @@ public static void ConfigureMiddleware(this WebApplication app) app.Use(async (context, next) => { - context.Response.Headers.Append("Content-Security-Policy", "default-src 'self'"); context.Response.Headers.Append("X-Content-Type-Options", "nosniff"); context.Response.Headers.Append("X-Frame-Options", "DENY"); context.Response.Headers.Append("Referrer-Policy", "no-referrer"); diff --git a/App/Api/Setup/Services.cs b/App/Api/Setup/Services.cs index 330d297..90ea67d 100644 --- a/App/Api/Setup/Services.cs +++ b/App/Api/Setup/Services.cs @@ -25,8 +25,7 @@ public static void ConfigureServices(this IServiceCollection services) opt.SubstituteApiVersionInUrl = true; }); - services.AddSwaggerGen(); - services.ConfigureOptions(); + services.AddOpenApi(); services.Configure(opt => { diff --git a/App/Api/Setup/Swagger.cs b/App/Api/Setup/Swagger.cs deleted file mode 100644 index c4f387e..0000000 --- a/App/Api/Setup/Swagger.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Asp.Versioning.ApiExplorer; -using Microsoft.Extensions.Options; -using Microsoft.OpenApi.Models; -using Swashbuckle.AspNetCore.SwaggerGen; - -public class ConfigureSwaggerOptions(IApiVersionDescriptionProvider provider) : IConfigureOptions -{ - private readonly IApiVersionDescriptionProvider _provider = provider; - - 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 = "Bitcoin Web API", - Version = description.ApiVersion.ToString(), - Description = "Description of API", - }; - - if (description.IsDeprecated) - { - info.Description += " This API version has been deprecated."; - } - - return info; - } -} \ No newline at end of file diff --git a/App/Api/wwwroot/swagger-ui/index.html b/App/Api/wwwroot/swagger-ui/index.html deleted file mode 100644 index 9a2c709..0000000 --- a/App/Api/wwwroot/swagger-ui/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - %(DocumentTitle) Customized - - - - - %(HeadContent) - - - -
- - - - - \ No newline at end of file diff --git a/App/Directory.Packages.props b/App/Directory.Packages.props index 16eb4e4..2fad8d1 100644 --- a/App/Directory.Packages.props +++ b/App/Directory.Packages.props @@ -6,9 +6,9 @@ + - diff --git a/Tests/IntegrationTests/IntegrationTests.cs b/Tests/IntegrationTests/IntegrationTests.cs index a378a7c..77514be 100644 --- a/Tests/IntegrationTests/IntegrationTests.cs +++ b/Tests/IntegrationTests/IntegrationTests.cs @@ -40,9 +40,9 @@ public async Task BuyAndSell(string? fromDate, string? toDate, HttpStatusCode st } [Fact] - public async Task Swagger() + public async Task OpenApi() { - var result = await _fixture.Client.GetAsync("/"); + var result = await _fixture.Client.GetAsync("/openapi/v1.json"); result.StatusCode.Should().Be(HttpStatusCode.OK); }