diff --git a/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs b/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs index 93a0e0599..8a9d96997 100644 --- a/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs +++ b/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs @@ -351,6 +351,7 @@ namespace NzbDrone.Common.Test.Http var oldRequest = new HttpRequest($"https://{_httpBinHost2}/get"); oldRequest.Cookies["my"] = "cookie"; + oldRequest.StoreRequestCookie = true; var oldClient = new HttpClient(Array.Empty(), Mocker.Resolve(), Mocker.Resolve(), Mocker.Resolve(), Mocker.Resolve()); @@ -362,7 +363,7 @@ namespace NzbDrone.Common.Test.Http } [Test] - public void should_preserve_cookie_during_session() + public void should_preserve_cookie_during_session_when_asked() { GivenOldCookie(); @@ -395,7 +396,7 @@ namespace NzbDrone.Common.Test.Http var requestGet = new HttpRequest($"https://{_httpBinHost}/get"); requestGet.Cookies.Add("my", "cookie"); requestGet.AllowAutoRedirect = false; - requestGet.StoreRequestCookie = false; + requestGet.StoreRequestCookie.Should().BeFalse(); requestGet.StoreResponseCookie = false; var responseGet = Subject.Get(requestGet); @@ -409,12 +410,13 @@ namespace NzbDrone.Common.Test.Http } [Test] - public void should_store_request_cookie() + public void should_store_request_cookie_when_asked() { var requestGet = new HttpRequest($"https://{_httpBinHost}/get"); requestGet.Cookies.Add("my", "cookie"); requestGet.AllowAutoRedirect = false; - requestGet.StoreRequestCookie.Should().BeTrue(); + requestGet.StoreRequestCookie.Should().BeFalse(); + requestGet.StoreRequestCookie = true; requestGet.StoreResponseCookie = false; var responseGet = Subject.Get(requestGet); diff --git a/src/NzbDrone.Common/Http/HttpRequest.cs b/src/NzbDrone.Common/Http/HttpRequest.cs index 89ec89a38..4a878c0ff 100644 --- a/src/NzbDrone.Common/Http/HttpRequest.cs +++ b/src/NzbDrone.Common/Http/HttpRequest.cs @@ -14,8 +14,6 @@ namespace NzbDrone.Common.Http Headers = new HttpHeader(); ConnectionKeepAlive = true; AllowAutoRedirect = true; - StoreRequestCookie = true; - IgnorePersistentCookies = false; Cookies = new Dictionary(); if (!RuntimeInfo.IsProduction) @@ -40,7 +38,6 @@ namespace NzbDrone.Common.Http public bool ConnectionKeepAlive { get; set; } public bool LogResponseContent { get; set; } public Dictionary Cookies { get; private set; } - public bool IgnorePersistentCookies { get; set; } public bool StoreRequestCookie { get; set; } public bool StoreResponseCookie { get; set; } public TimeSpan RequestTimeout { get; set; } diff --git a/src/NzbDrone.Common/Http/HttpRequestBuilder.cs b/src/NzbDrone.Common/Http/HttpRequestBuilder.cs index 2e9bf1a5b..2307658d4 100644 --- a/src/NzbDrone.Common/Http/HttpRequestBuilder.cs +++ b/src/NzbDrone.Common/Http/HttpRequestBuilder.cs @@ -26,6 +26,8 @@ namespace NzbDrone.Common.Http public bool LogResponseContent { get; set; } public NetworkCredential NetworkCredential { get; set; } public Dictionary Cookies { get; private set; } + public bool StoreRequestCookie { get; set; } + public bool StoreResponseCookie { get; set; } public List FormData { get; private set; } public Action PostProcess { get; set; } @@ -102,6 +104,8 @@ namespace NzbDrone.Common.Http request.SuppressHttpError = SuppressHttpError; request.UseSimplifiedUserAgent = UseSimplifiedUserAgent; request.AllowAutoRedirect = AllowAutoRedirect; + request.StoreRequestCookie = StoreRequestCookie; + request.StoreResponseCookie = StoreResponseCookie; request.ConnectionKeepAlive = ConnectionKeepAlive; request.RateLimit = RateLimit; request.LogResponseContent = LogResponseContent; @@ -357,6 +361,20 @@ namespace NzbDrone.Common.Http return this; } + public virtual HttpRequestBuilder StoreRequestCookies(bool val = true) + { + StoreRequestCookie = val; + + return this; + } + + public virtual HttpRequestBuilder StoreResponseCookies(bool val = true) + { + StoreResponseCookie = val; + + return this; + } + public virtual HttpRequestBuilder AddFormParameter(string key, object value) { if (Method != HttpMethod.POST)