From 96a14bab9afd66ba31441e7743e5ecf51399b870 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sat, 20 Oct 2012 13:03:18 -0700 Subject: [PATCH] Handle add to queue errors in SAB --- .../SabProviderTests/SabProviderFixture.cs | 11 +++++ .../Providers/DownloadClients/SabProvider.cs | 43 +++++++++++-------- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/SabProviderTests/SabProviderFixture.cs b/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/SabProviderTests/SabProviderFixture.cs index de238d9f6..dd3feeb22 100644 --- a/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/SabProviderTests/SabProviderFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/SabProviderTests/SabProviderFixture.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; using FizzWare.NBuilder; using FluentAssertions; using Moq; @@ -208,5 +209,15 @@ namespace NzbDrone.Core.Test.ProviderTests.DownloadClientTests.SabProviderTests //Assert result.Should().Be("0.6.9"); } + + [Test] + public void should_return_false_when_WebException_is_thrown() + { + Mocker.GetMock() + .Setup(s => s.DownloadString(It.IsAny())).Throws(new WebException()); + + Mocker.Resolve().DownloadNzb(url, title).Should().BeFalse(); + ExceptionVerification.ExpectedErrors(1); + } } } \ No newline at end of file diff --git a/NzbDrone.Core/Providers/DownloadClients/SabProvider.cs b/NzbDrone.Core/Providers/DownloadClients/SabProvider.cs index 3682a2ed6..91684cb12 100644 --- a/NzbDrone.Core/Providers/DownloadClients/SabProvider.cs +++ b/NzbDrone.Core/Providers/DownloadClients/SabProvider.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Net; using System.Text.RegularExpressions; using System.Web; using Newtonsoft.Json; @@ -79,30 +80,38 @@ namespace NzbDrone.Core.Providers.DownloadClients public virtual bool DownloadNzb(string url, string title) { - string cat = _configProvider.SabTvCategory; - int priority = (int)_configProvider.SabTvPriority; - string name = GetNzbName(url); - string nzbName = HttpUtility.UrlEncode(title); + try + { + string cat = _configProvider.SabTvCategory; + int priority = (int)_configProvider.SabTvPriority; + string name = GetNzbName(url); + string nzbName = HttpUtility.UrlEncode(title); - string action = string.Format("mode=addurl&name={0}&priority={1}&pp=3&cat={2}&nzbname={3}", - name, priority, cat, nzbName); + string action = string.Format("mode=addurl&name={0}&priority={1}&pp=3&cat={2}&nzbname={3}", + name, priority, cat, nzbName); - if (url.ToLower().Contains("newzbin")) - { - action = action.Replace("mode=addurl", "mode=addid"); - } + if (url.ToLower().Contains("newzbin")) + { + action = action.Replace("mode=addurl", "mode=addid"); + } - string request = GetSabRequest(action); + string request = GetSabRequest(action); + logger.Info("Adding report [{0}] to the queue.", title); - logger.Info("Adding report [{0}] to the queue.", title); + var response = _httpProvider.DownloadString(request).Replace("\n", String.Empty); + + logger.Debug("Queue Response: [{0}]", response); - string response = _httpProvider.DownloadString(request).Replace("\n", String.Empty); - logger.Debug("Queue Response: [{0}]", response); + if (response == "ok") + return true; - if (response == "ok") - return true; + logger.Warn("SAB returned unexpected response '{0}'", response); + } - logger.Warn("SAB returned unexpected response '{0}'", response); + catch (WebException ex) + { + logger.Error("Error communicating with SAB"); + } return false; }