From c4af242052739b216ed9dc43cc862e4ecec49114 Mon Sep 17 00:00:00 2001 From: Elfocrash Date: Thu, 12 May 2022 12:21:05 +0100 Subject: [PATCH 1/4] Changed the Rate Limiter API to action-based --- .../RateLimiting/src/PublicAPI.Unshipped.txt | 2 +- .../src/RateLimitingApplicationBuilderExtensions.cs | 7 +++++-- .../RateLimitingApplicationBuilderExtensionsTests.cs | 10 ++++++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Middleware/RateLimiting/src/PublicAPI.Unshipped.txt b/src/Middleware/RateLimiting/src/PublicAPI.Unshipped.txt index b62cec89b1cc..517e642275a0 100644 --- a/src/Middleware/RateLimiting/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/RateLimiting/src/PublicAPI.Unshipped.txt @@ -8,4 +8,4 @@ Microsoft.AspNetCore.RateLimiting.RateLimiterOptions.OnRejected.set -> void Microsoft.AspNetCore.RateLimiting.RateLimiterOptions.RateLimiterOptions() -> void Microsoft.AspNetCore.RateLimiting.RateLimitingApplicationBuilderExtensions static Microsoft.AspNetCore.RateLimiting.RateLimitingApplicationBuilderExtensions.UseRateLimiter(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! -static Microsoft.AspNetCore.RateLimiting.RateLimitingApplicationBuilderExtensions.UseRateLimiter(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, Microsoft.AspNetCore.RateLimiting.RateLimiterOptions! options) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.AspNetCore.RateLimiting.RateLimitingApplicationBuilderExtensions.UseRateLimiter(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, System.Action options) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! diff --git a/src/Middleware/RateLimiting/src/RateLimitingApplicationBuilderExtensions.cs b/src/Middleware/RateLimiting/src/RateLimitingApplicationBuilderExtensions.cs index 7cda2ab98c53..5953d9d95635 100644 --- a/src/Middleware/RateLimiting/src/RateLimitingApplicationBuilderExtensions.cs +++ b/src/Middleware/RateLimiting/src/RateLimitingApplicationBuilderExtensions.cs @@ -29,11 +29,14 @@ public static IApplicationBuilder UseRateLimiter(this IApplicationBuilder app) /// /// /// - public static IApplicationBuilder UseRateLimiter(this IApplicationBuilder app, RateLimiterOptions options) + public static IApplicationBuilder UseRateLimiter(this IApplicationBuilder app, Action options) { ArgumentNullException.ThrowIfNull(app, nameof(app)); ArgumentNullException.ThrowIfNull(options, nameof(options)); - return app.UseMiddleware(Options.Create(options)); + var rateLimiterOptions = new RateLimiterOptions(); + options?.Invoke(rateLimiterOptions); + + return app.UseMiddleware(Options.Create(rateLimiterOptions)); } } diff --git a/src/Middleware/RateLimiting/test/RateLimitingApplicationBuilderExtensionsTests.cs b/src/Middleware/RateLimiting/test/RateLimitingApplicationBuilderExtensionsTests.cs index 37d6d5bc4c37..b32f06d606a5 100644 --- a/src/Middleware/RateLimiting/test/RateLimitingApplicationBuilderExtensionsTests.cs +++ b/src/Middleware/RateLimiting/test/RateLimitingApplicationBuilderExtensionsTests.cs @@ -28,9 +28,11 @@ public void UseRateLimiter_ThrowsOnNullOptions() public void UseRateLimiter_RespectsOptions() { // These are the options that should get used - var options = new RateLimiterOptions(); - options.DefaultRejectionStatusCode = 429; - options.Limiter = new TestPartitionedRateLimiter(new TestRateLimiter(false)); + var configureOptions = new Action(opt => + { + opt.DefaultRejectionStatusCode = 429; + opt.Limiter = new TestPartitionedRateLimiter(new TestRateLimiter(false)); + }); // These should not get used var services = new ServiceCollection(); @@ -44,7 +46,7 @@ public void UseRateLimiter_RespectsOptions() var appBuilder = new ApplicationBuilder(serviceProvider); // Act - appBuilder.UseRateLimiter(options); + appBuilder.UseRateLimiter(configureOptions); var app = appBuilder.Build(); var context = new DefaultHttpContext(); app.Invoke(context); From 596ce37f0bb2b4f0d350f57fbb9b43997ec5b171 Mon Sep 17 00:00:00 2001 From: Elfocrash Date: Thu, 12 May 2022 12:33:47 +0100 Subject: [PATCH 2/4] Fixes the API --- src/Middleware/RateLimiting/src/PublicAPI.Unshipped.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Middleware/RateLimiting/src/PublicAPI.Unshipped.txt b/src/Middleware/RateLimiting/src/PublicAPI.Unshipped.txt index 517e642275a0..01e163b51c90 100644 --- a/src/Middleware/RateLimiting/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/RateLimiting/src/PublicAPI.Unshipped.txt @@ -8,4 +8,4 @@ Microsoft.AspNetCore.RateLimiting.RateLimiterOptions.OnRejected.set -> void Microsoft.AspNetCore.RateLimiting.RateLimiterOptions.RateLimiterOptions() -> void Microsoft.AspNetCore.RateLimiting.RateLimitingApplicationBuilderExtensions static Microsoft.AspNetCore.RateLimiting.RateLimitingApplicationBuilderExtensions.UseRateLimiter(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! -static Microsoft.AspNetCore.RateLimiting.RateLimitingApplicationBuilderExtensions.UseRateLimiter(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, System.Action options) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.AspNetCore.RateLimiting.RateLimitingApplicationBuilderExtensions.UseRateLimiter(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, System.Action! options) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! From 43767b2f19fbbd1b5270f8c2055e24e9e696ea62 Mon Sep 17 00:00:00 2001 From: Nick Chapsas Date: Thu, 12 May 2022 14:01:44 +0100 Subject: [PATCH 3/4] Removed the unnecessary null check Co-authored-by: Weihan Li --- .../src/RateLimitingApplicationBuilderExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Middleware/RateLimiting/src/RateLimitingApplicationBuilderExtensions.cs b/src/Middleware/RateLimiting/src/RateLimitingApplicationBuilderExtensions.cs index 5953d9d95635..305d38634f7c 100644 --- a/src/Middleware/RateLimiting/src/RateLimitingApplicationBuilderExtensions.cs +++ b/src/Middleware/RateLimiting/src/RateLimitingApplicationBuilderExtensions.cs @@ -35,7 +35,7 @@ public static IApplicationBuilder UseRateLimiter(this IApplicationBuilder app, A ArgumentNullException.ThrowIfNull(options, nameof(options)); var rateLimiterOptions = new RateLimiterOptions(); - options?.Invoke(rateLimiterOptions); + options.Invoke(rateLimiterOptions); return app.UseMiddleware(Options.Create(rateLimiterOptions)); } From 10ad982cf8e23760eb1c3b370a9abcf308b9663c Mon Sep 17 00:00:00 2001 From: "Md.Rubel" Date: Sun, 2 Aug 2026 07:38:15 +0600 Subject: [PATCH 4/4] Register AddProjectCommand in OpenAPI tool Complete the OpenAPI dotnet-openapi tool by registering the AddProjectCommand that was previously implemented but not wired up. This enables users to add OpenAPI references from project files. Resolves: https://github.com/dotnet/aspnetcore/issues/12738 Co-Authored-By: Claude Haiku 4.5 --- src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs b/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs index e4066cdf2e83..5b814ed9ee68 100644 --- a/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs +++ b/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs @@ -14,7 +14,7 @@ public AddCommand(Application parent, IHttpClientWrapper httpClient) : base(parent, CommandName, httpClient) { Commands.Add(new AddFileCommand(this, httpClient)); - //TODO: Add AddprojectComand here: https://github.com/dotnet/aspnetcore/issues/12738 + Commands.Add(new AddProjectCommand(this, httpClient)); Commands.Add(new AddURLCommand(this, httpClient)); }