diff --git a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxy.cs b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxy.cs index 61c6424eb..21758f97b 100644 --- a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxy.cs +++ b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxy.cs @@ -72,7 +72,13 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent .Post() .AddFormParameter("urls", torrentUrl); - ProcessRequest(request, settings); + var result = ProcessRequest(request, settings); + + // Note: Older qbit versions returned nothing, so we can't do != "Ok." here. + if (result == "Fails.") + { + throw new DownloadClientException("Download client failed to add torrent by url"); + } } public void AddTorrentFromFile(string fileName, Byte[] fileContent, QBittorrentSettings settings) @@ -81,7 +87,13 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent .Post() .AddFormUpload("torrents", fileName, fileContent); - ProcessRequest(request, settings); + var result = ProcessRequest(request, settings); + + // Note: Current qbit versions return nothing, so we can't do != "Ok." here. + if (result == "Fails.") + { + throw new DownloadClientException("Download client failed to add torrent"); + } } public void RemoveTorrent(string hash, Boolean removeData, QBittorrentSettings settings) @@ -90,7 +102,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent .Post() .AddFormParameter("hashes", hash); - ProcessRequest(request, settings); + ProcessRequest(request, settings); } public void SetTorrentLabel(string hash, string label, QBittorrentSettings settings) @@ -101,7 +113,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent .AddFormParameter("category", label); try { - ProcessRequest(setCategoryRequest, settings); + ProcessRequest(setCategoryRequest, settings); } catch(DownloadClientException ex) { @@ -112,7 +124,8 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent .Post() .AddFormParameter("hashes", hash) .AddFormParameter("label", label); - ProcessRequest(setLabelRequest, settings); + + ProcessRequest(setLabelRequest, settings); } } } @@ -125,7 +138,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent try { - var response = ProcessRequest(request, settings); + ProcessRequest(request, settings); } catch (DownloadClientException ex) { @@ -152,6 +165,13 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent private TResult ProcessRequest(HttpRequestBuilder requestBuilder, QBittorrentSettings settings) where TResult : new() + { + var responseContent = ProcessRequest(requestBuilder, settings); + + return Json.Deserialize(responseContent); + } + + private string ProcessRequest(HttpRequestBuilder requestBuilder, QBittorrentSettings settings) { AuthenticateClient(requestBuilder, settings); @@ -185,7 +205,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent throw new DownloadClientException("Failed to connect to qBitTorrent, please check your settings.", ex); } - return Json.Deserialize(response.Content); + return response.Content; } private void AuthenticateClient(HttpRequestBuilder requestBuilder, QBittorrentSettings settings, bool reauthenticate = false)