From f53a1d7942c9ffddc2c0868f8d62da97929c9417 Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 10 Nov 2021 21:59:08 +0000 Subject: [PATCH] Package updates --- src/Directory.Packages.props | 34 +++++++++---------- .../Http/HttpClientFixture.cs | 14 ++++++++ .../Http/Dispatchers/ManagedHttpDispatcher.cs | 34 +++++++++++-------- 3 files changed, 50 insertions(+), 32 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 8cbd6aa0c..c9828abda 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -2,9 +2,9 @@ - + - + @@ -13,8 +13,8 @@ - - + + @@ -23,29 +23,29 @@ - + - - - + + + - - - - + + + + - - - + + + - - + + diff --git a/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs b/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs index 22d790969..a3a177347 100644 --- a/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs +++ b/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs @@ -151,6 +151,20 @@ namespace NzbDrone.Common.Test.Http response.Resource.Data.Should().Be(message); } + [Test] + public void should_execute_post_with_content_type() + { + var message = "{ my: 1 }"; + + var request = new HttpRequest($"https://{_httpBinHost}/post"); + request.SetContent(message); + request.Headers.ContentType = "application/json"; + + var response = Subject.Post(request); + + response.Resource.Data.Should().Be(message); + } + [Test] public void should_execute_get_using_gzip() { diff --git a/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs b/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs index dbedd7fcf..8b9770921 100644 --- a/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs +++ b/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs @@ -78,6 +78,11 @@ namespace NzbDrone.Common.Http.Dispatchers cts.CancelAfter(TimeSpan.FromSeconds(100)); } + if (request.ContentData != null) + { + requestMessage.Content = new ByteArrayContent(request.ContentData); + } + if (request.Headers != null) { AddRequestHeaders(requestMessage, request.Headers); @@ -89,18 +94,6 @@ namespace NzbDrone.Common.Http.Dispatchers try { - if (request.ContentData != null) - { - var content = new ByteArrayContent(request.ContentData); - content.Headers.Remove("Content-Type"); - if (request.Headers.ContentType.IsNotNullOrWhiteSpace()) - { - content.Headers.Add("Content-Type", request.Headers.ContentType); - } - - requestMessage.Content = content; - } - responseMessage = httpClient.Send(requestMessage, cts.Token); } catch (HttpRequestException e) @@ -185,11 +178,10 @@ namespace NzbDrone.Common.Http.Dispatchers webRequest.Headers.Connection.Add(header.Value); break; case "Content-Length": - webRequest.Headers.Add("Content-Length", header.Value); + AddContentHeader(webRequest, "Content-Length", header.Value); break; case "Content-Type": - webRequest.Headers.Remove("Content-Type"); - webRequest.Headers.Add("Content-Type", header.Value); + AddContentHeader(webRequest, "Content-Type", header.Value); break; case "Date": webRequest.Headers.Remove("Date"); @@ -222,6 +214,18 @@ namespace NzbDrone.Common.Http.Dispatchers } } + private void AddContentHeader(HttpRequestMessage request, string header, string value) + { + var headers = request.Content?.Headers; + if (headers == null) + { + return; + } + + headers.Remove(header); + headers.Add(header, value); + } + private CredentialCache GetCredentialCache() { return _credentialCache.Get("credentialCache", () => new CredentialCache());