From 59aab9e1c369bf1319e5a52f4d1ddfedfd0205df Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Tue, 29 Aug 2023 17:53:17 +0200 Subject: [PATCH] Remove dependency on Microsoft.AspNet.WebApi.Client (#996) * Using an alias for System.Net.Http.Formatting * . * fix * space --- PackageReadme.md | 2 +- .../WireMock.Net.Testcontainers.csproj | 9 ++++- .../WireMockContainer.cs | 5 +-- src/WireMock.Net/Http/HttpClientFactory2.cs | 33 +++++++++++++------ src/WireMock.Net/WireMock.Net.csproj | 1 - .../WireMock.Net.Tests.csproj | 4 +-- 6 files changed, 36 insertions(+), 18 deletions(-) diff --git a/PackageReadme.md b/PackageReadme.md index ecf777f3c..90c743808 100644 --- a/PackageReadme.md +++ b/PackageReadme.md @@ -52,4 +52,4 @@ For more details see also [Docker](https://github.com/WireMock-Net/WireMock.Net- More details on using HTTPS (SSL) can be found here [Wiki : HTTPS](https://github.com/WireMock-Net/WireMock.Net/wiki/Using-HTTPS-(SSL)) ## :books: Documentation -For more info, see also this WIKI page: [What is WireMock.Net](https://github.com/WireMock-Net/WireMock.Net/wiki/What-Is-WireMock.Net). \ No newline at end of file +For more info, see also this WIKI page: [What is WireMock.Net](https://github.com/WireMock-Net/WireMock.Net/wiki/What-Is-WireMock.Net). diff --git a/src/WireMock.Net.Testcontainers/WireMock.Net.Testcontainers.csproj b/src/WireMock.Net.Testcontainers/WireMock.Net.Testcontainers.csproj index 8c3dad812..2943d0148 100644 --- a/src/WireMock.Net.Testcontainers/WireMock.Net.Testcontainers.csproj +++ b/src/WireMock.Net.Testcontainers/WireMock.Net.Testcontainers.csproj @@ -19,12 +19,15 @@ true + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - @@ -33,4 +36,8 @@ + + + + \ No newline at end of file diff --git a/src/WireMock.Net.Testcontainers/WireMockContainer.cs b/src/WireMock.Net.Testcontainers/WireMockContainer.cs index 6532b07f0..9a9a0bdf8 100644 --- a/src/WireMock.Net.Testcontainers/WireMockContainer.cs +++ b/src/WireMock.Net.Testcontainers/WireMockContainer.cs @@ -8,6 +8,7 @@ using RestEase; using Stef.Validation; using WireMock.Client; +using WireMock.Http; namespace WireMock.Net.Testcontainers; @@ -71,7 +72,7 @@ public HttpClient CreateClient(params DelegatingHandler[] handlers) { ValidateIfRunning(); - var client = HttpClientFactory.Create(handlers); + var client = HttpClientFactory2.Create(handlers); client.BaseAddress = GetPublicUri(); return client; } @@ -93,7 +94,7 @@ public HttpClient CreateClient(HttpMessageHandler innerHandler, params Delegatin { ValidateIfRunning(); - var client = HttpClientFactory.Create(innerHandler, handlers); + var client = HttpClientFactory2.Create(innerHandler, handlers); client.BaseAddress = GetPublicUri(); return client; } diff --git a/src/WireMock.Net/Http/HttpClientFactory2.cs b/src/WireMock.Net/Http/HttpClientFactory2.cs index 036901722..9dd71ada2 100644 --- a/src/WireMock.Net/Http/HttpClientFactory2.cs +++ b/src/WireMock.Net/Http/HttpClientFactory2.cs @@ -1,3 +1,4 @@ +using System.Linq; using System.Net.Http; namespace WireMock.Http; @@ -6,19 +7,31 @@ internal static class HttpClientFactory2 { public static HttpClient Create(params DelegatingHandler[] handlers) { -#if NETSTANDARD1_3 - return new HttpClient(); -#else - return HttpClientFactory.Create(handlers); -#endif + var handler = CreateHandlerPipeline(new HttpClientHandler(), handlers); + return new HttpClient(handler); } public static HttpClient Create(HttpMessageHandler innerHandler, params DelegatingHandler[] handlers) { -#if NETSTANDARD1_3 - return new HttpClient(innerHandler); -#else - return HttpClientFactory.Create(innerHandler, handlers); -#endif + var handler = CreateHandlerPipeline(innerHandler, handlers); + return new HttpClient(handler); + } + + private static HttpMessageHandler CreateHandlerPipeline(HttpMessageHandler handler, params DelegatingHandler[] delegatingHandlers) + { + if (delegatingHandlers.Length == 0) + { + return handler; + } + + var next = handler; + + foreach (var delegatingHandler in delegatingHandlers.Reverse()) + { + delegatingHandler.InnerHandler = next; + next = delegatingHandler; + } + + return next; } } \ No newline at end of file diff --git a/src/WireMock.Net/WireMock.Net.csproj b/src/WireMock.Net/WireMock.Net.csproj index 4783414ec..c0fdd3737 100644 --- a/src/WireMock.Net/WireMock.Net.csproj +++ b/src/WireMock.Net/WireMock.Net.csproj @@ -82,7 +82,6 @@ - diff --git a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj index c9ef88e71..c6f56ad42 100644 --- a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj +++ b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj @@ -72,6 +72,7 @@ + @@ -134,7 +135,4 @@ - - - \ No newline at end of file