From e9e2f4ef588684fa2633a148c726b0f075d2ea09 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sun, 16 Nov 2025 13:06:57 -0800 Subject: [PATCH] Fixed: Testing qBittorrent after credentials change would always pass tests (cherry picked from commit 9e780074571a21358abc1c3ed10fc25569378230) --- src/NzbDrone.Common/Http/HttpRequestBuilder.cs | 3 +++ .../Download/Clients/QBittorrent/QBittorrentProxyV2.cs | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Common/Http/HttpRequestBuilder.cs b/src/NzbDrone.Common/Http/HttpRequestBuilder.cs index 93eebd039..fb166a29e 100644 --- a/src/NzbDrone.Common/Http/HttpRequestBuilder.cs +++ b/src/NzbDrone.Common/Http/HttpRequestBuilder.cs @@ -28,6 +28,7 @@ public class HttpRequestBuilder public TimeSpan RateLimit { get; set; } public bool LogResponseContent { get; set; } public ICredentials NetworkCredential { get; set; } + public bool StoreRequestCookie { get; set; } public Dictionary Cookies { get; private set; } public List FormData { get; private set; } public Action PostProcess { get; set; } @@ -44,6 +45,7 @@ public HttpRequestBuilder(string baseUrl) Cookies = new Dictionary(); FormData = new List(); LogHttpError = true; + StoreRequestCookie = true; } public HttpRequestBuilder(bool useHttps, string host, int port, string urlBase = null) @@ -111,6 +113,7 @@ protected virtual void Apply(HttpRequest request) request.RateLimit = RateLimit; request.LogResponseContent = LogResponseContent; request.Credentials = NetworkCredential; + request.StoreRequestCookie = StoreRequestCookie; foreach (var header in Headers) { diff --git a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxyV2.cs b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxyV2.cs index 97878774d..156f80310 100644 --- a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxyV2.cs +++ b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxyV2.cs @@ -342,7 +342,7 @@ private HttpRequestBuilder BuildRequest(QBittorrentSettings settings) var requestBuilder = new HttpRequestBuilder(settings.UseSsl, settings.Host, settings.Port, settings.UrlBase) { LogResponseContent = true, - NetworkCredential = new BasicNetworkCredential(settings.Username, settings.Password) + StoreRequestCookie = false }; return requestBuilder; } @@ -403,7 +403,7 @@ private void AuthenticateClient(HttpRequestBuilder requestBuilder, QBittorrentSe return; } - var authKey = string.Format("{0}:{1}", requestBuilder.BaseUrl, settings.Password); + var authKey = $"{requestBuilder.BaseUrl}:{settings.Username}:{settings.Password}"; var cookies = _authCookieCache.Find(authKey); @@ -411,7 +411,10 @@ private void AuthenticateClient(HttpRequestBuilder requestBuilder, QBittorrentSe { _authCookieCache.Remove(authKey); - var authLoginRequest = BuildRequest(settings).Resource("/api/v2/auth/login") + var authRequestBuilder = BuildRequest(settings); + authRequestBuilder.NetworkCredential = new BasicNetworkCredential(settings.Username, settings.Password); + + var authLoginRequest = authRequestBuilder.Resource("/api/v2/auth/login") .Post() .AddFormParameter("username", settings.Username ?? string.Empty) .AddFormParameter("password", settings.Password ?? string.Empty)