From 731123dfc040bde8acc1b02bdd58072677458012 Mon Sep 17 00:00:00 2001 From: Gianni Bonicolini Date: Mon, 23 Dec 2024 11:31:06 +0100 Subject: [PATCH] Added an extension method to remove the servers list from OpenAPI specification --- .../TinyHelpers.AspNetCore.Sample/Program.cs | 3 +++ .../OpenApi/OpenApiExtensions.cs | 3 +++ .../OpenApi/RemoveServersDocumentTransformer.cs | 17 +++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 src/TinyHelpers.AspNetCore/OpenApi/RemoveServersDocumentTransformer.cs diff --git a/samples/TinyHelpers.AspNetCore.Sample/Program.cs b/samples/TinyHelpers.AspNetCore.Sample/Program.cs index 8bba11b..3774e0e 100644 --- a/samples/TinyHelpers.AspNetCore.Sample/Program.cs +++ b/samples/TinyHelpers.AspNetCore.Sample/Program.cs @@ -47,6 +47,9 @@ // Enable OpenAPI integration for custom parameters. options.AddOperationParameters(); + + // Remove Servers list in OpenAPI + options.RemoveServersList(); }); // Add default problem details and exception handler. diff --git a/src/TinyHelpers.AspNetCore/OpenApi/OpenApiExtensions.cs b/src/TinyHelpers.AspNetCore/OpenApi/OpenApiExtensions.cs index 1038a5f..f7c8b31 100644 --- a/src/TinyHelpers.AspNetCore/OpenApi/OpenApiExtensions.cs +++ b/src/TinyHelpers.AspNetCore/OpenApi/OpenApiExtensions.cs @@ -28,6 +28,9 @@ public static IServiceCollection AddOpenApiOperationParameters(this IServiceColl public static void AddOperationParameters(this OpenApiOptions options) => options.AddOperationTransformer(); + + public static void RemoveServersList(this OpenApiOptions options) + => options.AddDocumentTransformer(); } #endif \ No newline at end of file diff --git a/src/TinyHelpers.AspNetCore/OpenApi/RemoveServersDocumentTransformer.cs b/src/TinyHelpers.AspNetCore/OpenApi/RemoveServersDocumentTransformer.cs new file mode 100644 index 0000000..4c94ebe --- /dev/null +++ b/src/TinyHelpers.AspNetCore/OpenApi/RemoveServersDocumentTransformer.cs @@ -0,0 +1,17 @@ +#if NET9_0_OR_GREATER + +using Microsoft.AspNetCore.OpenApi; +using Microsoft.OpenApi.Models; + +namespace TinyHelpers.AspNetCore.OpenApi; + +internal class RemoveServersListDocumentTransformer : IOpenApiDocumentTransformer +{ + public Task TransformAsync(OpenApiDocument document, OpenApiDocumentTransformerContext context, CancellationToken cancellationToken) + { + document.Servers.Clear(); + return Task.CompletedTask; + } +} + +#endif \ No newline at end of file