diff --git a/README.md b/README.md index 57840d5..79197b2 100644 --- a/README.md +++ b/README.md @@ -43,10 +43,10 @@ Logging, monitoring, or tracing outgoing requests across the application. ### 💡 Why Use HttpClientToCurl? -- 🧪 Instantly visualize and debug request payloads or headers +- 🧪 Instantly visualise and debug request payloads or headers - 🤝 Share exact API calls with teammates or QA engineers - ⚙️ Simplify Postman and CLI reproduction -- 🪶 Lightweight, dependency-free, and easy to integrate +- 🧩 Lightweight, dependency-free, and easy to integrate --- ## ⚙️ Installation @@ -111,25 +111,25 @@ curl -X POST 'http://localhost:1213/v1/api/test' \ ## 🧩 Automatic Mode Usage Example -### 1️⃣ Global Registration +### 1️⃣ Per-Client Registration -Enable curl generation globally — every `HttpClient` created through `IHttpClientFactory` will automatically log curl commands. +Enable curl logging for specific named clients only. **Program.cs / Startup.cs** ```csharp using HttpClientToCurl; -// Register global curl generation -builder.Services.AddHttpClientToCurlInGeneralMode(builder.Configuration); +// Register the curl generator once +builder.Services.AddHttpClientToCurl(builder.Configuration); -// Register default HttpClient (now curl-enabled) -builder.Services.AddHttpClient(); +// Enable curl logging for selected clients +builder.Services.AddHttpClient("my-client1", showCurl: true); ``` **appsettings.json** ```json "HttpClientToCurl": { - "TurnOnAll": true, // Master switch: enable or disable the entire HttpClientToCURL logging system + "Enable": true, // Master switch: enable or disable the entire HttpClientToCURL logging system "ShowOnConsole": { "TurnOn": true, // Enable console output for generated curl commands @@ -150,21 +150,20 @@ builder.Services.AddHttpClient(); --- -### 2️⃣ Per-Client Registration +### 2️⃣ Global Registration -Enable curl logging for specific named clients only. +Enable curl generation globally — every `HttpClient` created through `IHttpClientFactory` will automatically log curl commands. **Program.cs / Startup.cs** ```csharp using HttpClientToCurl; -// Register the curl generator once -builder.Services.AddHttpClientToCurl(builder.Configuration); +// Register global curl generation +builder.Services.AddAllHttpClientToCurl(builder.Configuration); -// Enable curl logging for selected clients -builder.Services.AddHttpClient("my-client1", showCurl: true); +// Register default HttpClient (now curl-enabled) +builder.Services.AddHttpClient(); ``` ---- **appsettings.json** (same configuration options as above) diff --git a/examples/HttpClientToCurl.Sample.InGlobal/Program.cs b/examples/HttpClientToCurl.Sample.InGlobal/Program.cs index bd5b837..636813d 100644 --- a/examples/HttpClientToCurl.Sample.InGlobal/Program.cs +++ b/examples/HttpClientToCurl.Sample.InGlobal/Program.cs @@ -3,7 +3,7 @@ var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); -builder.Services.AddHttpClientToCurlInGeneralMode(builder.Configuration); +builder.Services.AddAllHttpClientToCurl(builder.Configuration); builder.Services.AddHttpClient(); var app = builder.Build(); diff --git a/examples/HttpClientToCurl.Sample.InGlobal/appsettings.json b/examples/HttpClientToCurl.Sample.InGlobal/appsettings.json index 279e909..70af6f7 100644 --- a/examples/HttpClientToCurl.Sample.InGlobal/appsettings.json +++ b/examples/HttpClientToCurl.Sample.InGlobal/appsettings.json @@ -7,17 +7,17 @@ }, "AllowedHosts": "*", "HttpClientToCurl": { - "TurnOnAll": true, + "Enable": true, "ShowOnConsole": { - "TurnOn": true, //CAUTION: It will be applied when TurnOnAll is 'true' + "TurnOn": true, //CAUTION: It will be applied when Enable is 'true' "NeedAddDefaultHeaders": true, "EnableCompression": false, "EnableCodeBeautification": true }, "SaveToFile": { - "TurnOn": true, //CAUTION: It will be applied when TurnOnAll is 'true' + "TurnOn": true, //CAUTION: It will be applied when Enable is 'true' "NeedAddDefaultHeaders": true, "EnableCompression": false, "Filename": "curl_commands", diff --git a/examples/HttpClientToCurl.Sample.InSpecific/appsettings.json b/examples/HttpClientToCurl.Sample.InSpecific/appsettings.json index 279e909..70af6f7 100644 --- a/examples/HttpClientToCurl.Sample.InSpecific/appsettings.json +++ b/examples/HttpClientToCurl.Sample.InSpecific/appsettings.json @@ -7,17 +7,17 @@ }, "AllowedHosts": "*", "HttpClientToCurl": { - "TurnOnAll": true, + "Enable": true, "ShowOnConsole": { - "TurnOn": true, //CAUTION: It will be applied when TurnOnAll is 'true' + "TurnOn": true, //CAUTION: It will be applied when Enable is 'true' "NeedAddDefaultHeaders": true, "EnableCompression": false, "EnableCodeBeautification": true }, "SaveToFile": { - "TurnOn": true, //CAUTION: It will be applied when TurnOnAll is 'true' + "TurnOn": true, //CAUTION: It will be applied when Enable is 'true' "NeedAddDefaultHeaders": true, "EnableCompression": false, "Filename": "curl_commands", diff --git a/src/HttpClientToCurl/Config/CompositConfig.cs b/src/HttpClientToCurl/Config/CompositConfig.cs index d610b76..5fa5fd2 100644 --- a/src/HttpClientToCurl/Config/CompositConfig.cs +++ b/src/HttpClientToCurl/Config/CompositConfig.cs @@ -5,17 +5,17 @@ public sealed class CompositConfig /// /// Set true to create curl output; false to disable it. Default is true. /// - public bool TurnOnAll { get; set; } = true; + public bool Enable { get; set; } = true; /// /// Set true to show curl on the console; false to disable it. Default is true. - /// If TurnOnAll is set to false, it will be ignored. + /// If Enable is set to false, it will be ignored. /// public ConsoleConfig ShowOnConsole { get; set; } /// /// Set true to save the curl file; false to disable it. Default is true. - /// If TurnOnAll is set to false, it will be ignored. + /// If Enable is set to false, it will be ignored. /// public FileConfig SaveToFile { get; set; } } diff --git a/src/HttpClientToCurl/Extensions/ServiceCollectionExtensions.cs b/src/HttpClientToCurl/Extensions/ServiceCollectionExtensions.cs index 80ddb98..5a3c48a 100644 --- a/src/HttpClientToCurl/Extensions/ServiceCollectionExtensions.cs +++ b/src/HttpClientToCurl/Extensions/ServiceCollectionExtensions.cs @@ -12,7 +12,7 @@ public static class ServiceCollectionExtensions /// Generating curl script for all HTTP requests. /// By default, show it in the IDE console. /// - public static void AddHttpClientToCurlInGeneralMode( + public static void AddAllHttpClientToCurl( this IServiceCollection services, IConfiguration configuration) { diff --git a/src/HttpClientToCurl/HttpMessageHandlers/CurlGeneratorHttpMessageHandler.cs b/src/HttpClientToCurl/HttpMessageHandlers/CurlGeneratorHttpMessageHandler.cs index ea187b3..9c71cc5 100644 --- a/src/HttpClientToCurl/HttpMessageHandlers/CurlGeneratorHttpMessageHandler.cs +++ b/src/HttpClientToCurl/HttpMessageHandlers/CurlGeneratorHttpMessageHandler.cs @@ -13,7 +13,7 @@ protected override Task SendAsync( CancellationToken cancellationToken) { var config = _monitorConfig.CurrentValue; - if (config.TurnOnAll) + if (config.Enable) { if (config.ShowOnConsole?.TurnOn ?? false) { diff --git a/src/HttpClientToCurl/HttpMessageHandlers/HttpMessageHandlerAppender.cs b/src/HttpClientToCurl/HttpMessageHandlers/HttpMessageHandlerAppender.cs index fa35ae5..cae95ca 100644 --- a/src/HttpClientToCurl/HttpMessageHandlers/HttpMessageHandlerAppender.cs +++ b/src/HttpClientToCurl/HttpMessageHandlers/HttpMessageHandlerAppender.cs @@ -2,6 +2,7 @@ using Microsoft.Extensions.Http; namespace HttpClientToCurl.HttpMessageHandlers; + public class HttpMessageHandlerAppender(IServiceProvider serviceProvider) : IHttpMessageHandlerBuilderFilter { public Action Configure(Action next) => builder => diff --git a/tests/HttpMessageHandlerTest/UnitTest/Builders/CompositConfigBuilder.cs b/tests/HttpMessageHandlerTest/UnitTest/Builders/CompositConfigBuilder.cs index 96607d1..4bc457d 100644 --- a/tests/HttpMessageHandlerTest/UnitTest/Builders/CompositConfigBuilder.cs +++ b/tests/HttpMessageHandlerTest/UnitTest/Builders/CompositConfigBuilder.cs @@ -10,9 +10,9 @@ public CompositConfigBuilder() _config = new CompositConfig(); } - public CompositConfigBuilder SetTurnOnAll(bool turnOnAll) + public CompositConfigBuilder SetEnable(bool value) { - _config.TurnOnAll = turnOnAll; + _config.Enable = value; return this; } diff --git a/tests/HttpMessageHandlerTest/UnitTest/CurlGeneratorHttpMessageHandlerTests.cs b/tests/HttpMessageHandlerTest/UnitTest/CurlGeneratorHttpMessageHandlerTests.cs index 68b521f..1a0ed3c 100644 --- a/tests/HttpMessageHandlerTest/UnitTest/CurlGeneratorHttpMessageHandlerTests.cs +++ b/tests/HttpMessageHandlerTest/UnitTest/CurlGeneratorHttpMessageHandlerTests.cs @@ -14,7 +14,7 @@ public async Task CurlGeneratorHttpMessageHandler_ReturnsResponse_When_TurnOffAl { // Arrange var config = new CompositConfigBuilder() - .SetTurnOnAll(false) + .SetEnable(false) .Build(); var handler = new CurlGeneratorHttpMessageHandler(new FakeOptionsMonitor(config)) { @@ -33,11 +33,11 @@ public async Task CurlGeneratorHttpMessageHandler_ReturnsResponse_When_TurnOffAl } [Fact] - public async Task CurlGeneratorHttpMessageHandler_ReturnsResponse_When_TurnOnAll_But_ShowOnConsole_And_SaveToFile_AreNot_Configured() + public async Task CurlGeneratorHttpMessageHandler_ReturnsResponse_When_Enable_But_ShowOnConsole_And_SaveToFile_AreNot_Configured() { // Arrange var config = new CompositConfigBuilder() - .SetTurnOnAll(true) + .SetEnable(true) .SetShowOnConsole(null) .SetSaveToFile(null) .Build(); @@ -58,11 +58,11 @@ public async Task CurlGeneratorHttpMessageHandler_ReturnsResponse_When_TurnOnAll } [Fact] - public async Task CurlGeneratorHttpMessageHandler_ReturnsResponse_When_TurnOnAll_But_ShowOnConsole_And_SaveToFile_TurnOff() + public async Task CurlGeneratorHttpMessageHandler_ReturnsResponse_When_Enable_But_ShowOnConsole_And_SaveToFile_TurnOff() { // Arrange var config = new CompositConfigBuilder() - .SetTurnOnAll(true) + .SetEnable(true) .SetShowOnConsole(new ConsoleConfig { TurnOn = false, @@ -93,7 +93,7 @@ public async Task CurlGeneratorHttpMessageHandler_WritesToConsole_When_ShowOnCon { // Arrange var config = new CompositConfigBuilder() - .SetTurnOnAll(true) + .SetEnable(true) .SetShowOnConsole(new ConsoleConfig { TurnOn = true, @@ -139,7 +139,7 @@ public async Task CurlGeneratorHttpMessageHandler_WritesToFile_When_SaveToFile_T var filename = Guid.NewGuid().ToString("N"); var config = new CompositConfigBuilder() - .SetTurnOnAll(true) + .SetEnable(true) .SetSaveToFile(new FileConfig { TurnOn = true, @@ -194,7 +194,7 @@ public async Task CurlGeneratorHttpMessageHandler_WritesToConsole_And_WritesToFi var filename = Guid.NewGuid().ToString("N"); var config = new CompositConfigBuilder() - .SetTurnOnAll(true) + .SetEnable(true) .SetShowOnConsole(new ConsoleConfig { TurnOn = true, diff --git a/tests/HttpMessageHandlerTest/UnitTest/HttpMessageHandlerAppenderTests.cs b/tests/HttpMessageHandlerTest/UnitTest/HttpMessageHandlerAppenderTests.cs index 8b72e3a..080bdf0 100644 --- a/tests/HttpMessageHandlerTest/UnitTest/HttpMessageHandlerAppenderTests.cs +++ b/tests/HttpMessageHandlerTest/UnitTest/HttpMessageHandlerAppenderTests.cs @@ -5,13 +5,14 @@ using HttpMessageHandlerTest.UnitTest.Fakes; namespace HttpMessageHandlerTest.UnitTest; + public class HttpMessageHandlerAppenderTests { [Fact] public void HttpMessageHandlerAppender_Adds_Handler_To_Builder() { // Arrange - var config = new CompositConfig { TurnOnAll = false }; + var config = new CompositConfig { Enable = false }; var handler = new CurlGeneratorHttpMessageHandler(new FakeOptionsMonitor(config)); var sp = new FakeServiceProvider(handler); var appender = new HttpMessageHandlerAppender(sp); diff --git a/tests/HttpMessageHandlerTest/UnitTest/ServiceCollectionExtensionsTests.cs b/tests/HttpMessageHandlerTest/UnitTest/ServiceCollectionExtensionsTests.cs index 75c8f37..ddd2bca 100644 --- a/tests/HttpMessageHandlerTest/UnitTest/ServiceCollectionExtensionsTests.cs +++ b/tests/HttpMessageHandlerTest/UnitTest/ServiceCollectionExtensionsTests.cs @@ -12,7 +12,7 @@ namespace HttpMessageHandlerTest.UnitTest; public class ServiceCollectionExtensionsTests { [Fact] - public void ServiceCollectionExtensions_Register_Services_In_GeneralMode() + public void ServiceCollectionExtensions_Register_Services_For_All() { // Arrange var services = new ServiceCollection(); @@ -20,7 +20,7 @@ public void ServiceCollectionExtensions_Register_Services_In_GeneralMode() .Build(); // Act - services.AddHttpClientToCurlInGeneralMode(configuration); + services.AddAllHttpClientToCurl(configuration); var provider = services.BuildServiceProvider(); // Assert