diff --git a/src/NzbDrone.Core/Download/Clients/Deluge/DelugeProxy.cs b/src/NzbDrone.Core/Download/Clients/Deluge/DelugeProxy.cs index 52e98224f..82088c858 100644 --- a/src/NzbDrone.Core/Download/Clients/Deluge/DelugeProxy.cs +++ b/src/NzbDrone.Core/Download/Clients/Deluge/DelugeProxy.cs @@ -177,7 +177,7 @@ namespace NzbDrone.Core.Download.Clients.Deluge { var requestBuilder = BuildRequest(settings); - var response = ProcessRequest(requestBuilder, method, arguments); + var response = ExecuteRequest(requestBuilder, method, arguments); if (response.Error != null) { @@ -186,7 +186,7 @@ namespace NzbDrone.Core.Download.Clients.Deluge { AuthenticateClient(requestBuilder, settings, true); - response = ProcessRequest(requestBuilder, method, arguments); + response = ExecuteRequest(requestBuilder, method, arguments); if (response.Error == null) { @@ -203,7 +203,7 @@ namespace NzbDrone.Core.Download.Clients.Deluge return response.Result; } - private JsonRpcResponse ProcessRequest(JsonRpcRequestBuilder requestBuilder, string method, params object[] arguments) + private JsonRpcResponse ExecuteRequest(JsonRpcRequestBuilder requestBuilder, string method, params object[] arguments) { var request = requestBuilder.Call(method, arguments).Build(); @@ -235,6 +235,15 @@ namespace NzbDrone.Core.Download.Clients.Deluge } } + private void VerifyResponse(JsonRpcResponse response) + { + if (response.Error != null) + { + var error = response.Error.ToObject(); + throw new DelugeException(error.Message, error.Code); + } + } + private void AuthenticateClient(JsonRpcRequestBuilder requestBuilder, DelugeSettings settings, bool reauthenticate = false) { var authKey = string.Format("{0}:{1}", requestBuilder.BaseUrl, settings.Password); @@ -271,14 +280,16 @@ namespace NzbDrone.Core.Download.Clients.Deluge private void ConnectDaemon(JsonRpcRequestBuilder requestBuilder) { - var resultConnected = ProcessRequest(requestBuilder, "web.connected"); + var resultConnected = ExecuteRequest(requestBuilder, "web.connected"); + VerifyResponse(resultConnected); if (resultConnected.Result) { return; } - var resultHosts = ProcessRequest>(requestBuilder, "web.get_hosts"); + var resultHosts = ExecuteRequest>(requestBuilder, "web.get_hosts"); + VerifyResponse(resultHosts); if (resultHosts.Result != null) { @@ -287,13 +298,14 @@ namespace NzbDrone.Core.Download.Clients.Deluge if (connection != null) { - ProcessRequest(requestBuilder, "web.connect", new object[] { connection[0] }); - } - else - { - throw new DownloadClientException("Failed to connect to Deluge daemon."); + var resultConnect = ExecuteRequest(requestBuilder, "web.connect", new object[] { connection[0] }); + VerifyResponse(resultConnect); + + return; } } + + throw new DownloadClientException("Failed to connect to Deluge daemon."); } private DelugeTorrent[] GetTorrents(DelugeUpdateUIResult result)