diff --git a/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs b/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs index 6ae144000..e99382894 100644 --- a/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs +++ b/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs @@ -266,9 +266,18 @@ namespace NzbDrone.Core.Download.Clients.Nzbget return _proxy.GetVersion(Settings); } - public override void Test() + public override void Test(NzbgetSettings settings) { - _proxy.GetVersion(Settings); + _proxy.GetVersion(settings); + + var config = _proxy.GetConfig(settings); + + var categories = GetCategories(config); + + if (!categories.Any(v => v.Name == settings.TvCategory)) + { + throw new ApplicationException("Category does not exist"); + } } public void Execute(TestNzbgetCommand message) @@ -276,7 +285,7 @@ namespace NzbDrone.Core.Download.Clients.Nzbget var settings = new NzbgetSettings(); settings.InjectFrom(message); - _proxy.GetVersion(settings); + Test(settings); } // Javascript doesn't support 64 bit integers natively so json officially doesn't either. diff --git a/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetProxy.cs b/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetProxy.cs index 714f3eb81..6f7f50a6f 100644 --- a/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetProxy.cs +++ b/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetProxy.cs @@ -38,7 +38,7 @@ namespace NzbDrone.Core.Download.Clients.Nzbget var request = BuildRequest(new JsonRequest("append", parameters)); var response = Json.Deserialize>(ProcessRequest(request, settings)); - _logger.Debug("Queue Response: [{0}]", response.Result); + _logger.Trace("Response: [{0}]", response.Result); if (!response.Result) { @@ -154,7 +154,7 @@ namespace NzbDrone.Core.Download.Clients.Nzbget { var client = BuildClient(settings); var response = client.Execute(restRequest); - _logger.Debug("Response: {0}", response.Content); + _logger.Trace("Response: {0}", response.Content); CheckForError(response); @@ -170,6 +170,8 @@ namespace NzbDrone.Core.Download.Clients.Nzbget settings.Host, settings.Port); + _logger.Debug("Url: " + url); + var client = new RestClient(url); client.Authenticator = new HttpBasicAuthenticator(settings.Username, settings.Password); diff --git a/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs b/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs index 489acc1d3..e8f0b7a09 100644 --- a/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs +++ b/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs @@ -12,6 +12,7 @@ using NzbDrone.Core.Messaging.Commands; using NzbDrone.Core.Organizer; using NzbDrone.Core.Parser; using NzbDrone.Core.Parser.Model; +using Omu.ValueInjecter; namespace NzbDrone.Core.Download.Clients.Pneumatic { @@ -100,12 +101,12 @@ namespace NzbDrone.Core.Download.Clients.Pneumatic return status; } - public override void Test() + public override void Test(PneumaticSettings settings) { - PerformTest(Settings.NzbFolder); + PerformWriteTest(settings.NzbFolder); } - private void PerformTest(string folder) + private void PerformWriteTest(string folder) { var testPath = Path.Combine(folder, "drone_test.txt"); _diskProvider.WriteAllText(testPath, DateTime.Now.ToString()); @@ -114,7 +115,10 @@ namespace NzbDrone.Core.Download.Clients.Pneumatic public void Execute(TestPneumaticCommand message) { - PerformTest(message.Folder); + var settings = new PneumaticSettings(); + settings.InjectFrom(message); + + Test(settings); } } } diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs index 687752b2c..e14c15336 100644 --- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs +++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs @@ -218,9 +218,14 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd return status; } - public override void Test() + public override void Test(SabnzbdSettings settings) { - _proxy.GetCategories(Settings); + var categories = _proxy.GetCategories(settings); + + if (!categories.Any(v => v == settings.TvCategory)) + { + throw new ApplicationException("Category does not exist"); + } } public void Execute(TestSabnzbdCommand message) @@ -228,7 +233,7 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd var settings = new SabnzbdSettings(); settings.InjectFrom(message); - _proxy.GetCategories(settings); + Test(settings); } } } \ No newline at end of file diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs index 1fe9ce8ec..00e943721 100644 --- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs +++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs @@ -1,5 +1,7 @@ using System; using System.IO; +using System.Linq; +using System.Collections.Generic; using Newtonsoft.Json.Linq; using NLog; using NzbDrone.Common; @@ -16,7 +18,7 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd void RemoveFrom(string source, string id, SabnzbdSettings settings); string ProcessRequest(IRestRequest restRequest, string action, SabnzbdSettings settings); SabnzbdVersionResponse GetVersion(SabnzbdSettings settings); - SabnzbdCategoryResponse GetCategories(SabnzbdSettings settings); + List GetCategories(SabnzbdSettings settings); SabnzbdQueue GetQueue(int start, int limit, SabnzbdSettings settings); SabnzbdHistory GetHistory(int start, int limit, SabnzbdSettings settings); void RetryDownload(string id, SabnzbdSettings settings); @@ -83,12 +85,12 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd return response; } - public SabnzbdCategoryResponse GetCategories(SabnzbdSettings settings) + public List GetCategories(SabnzbdSettings settings) { var request = new RestRequest(); var action = "mode=get_cats"; - var response = Json.Deserialize(ProcessRequest(request, action, settings)); + var response = Json.Deserialize(ProcessRequest(request, action, settings)).Categories; return response; } @@ -134,7 +136,7 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd action, authentication); - _logger.Debug(url); + _logger.Debug("Url: " + url); return new RestClient(url); } diff --git a/src/NzbDrone.Core/Download/Clients/UsenetBlackhole/UsenetBlackhole.cs b/src/NzbDrone.Core/Download/Clients/UsenetBlackhole/UsenetBlackhole.cs index 0bddc8b2d..290eb8564 100644 --- a/src/NzbDrone.Core/Download/Clients/UsenetBlackhole/UsenetBlackhole.cs +++ b/src/NzbDrone.Core/Download/Clients/UsenetBlackhole/UsenetBlackhole.cs @@ -13,6 +13,7 @@ using NzbDrone.Core.Organizer; using NzbDrone.Core.Parser; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.MediaFiles; +using Omu.ValueInjecter; namespace NzbDrone.Core.Download.Clients.UsenetBlackhole { @@ -136,12 +137,6 @@ namespace NzbDrone.Core.Download.Clients.UsenetBlackhole throw new NotSupportedException(); } - public override void Test() - { - PerformTest(Settings.NzbFolder); - PerformTest(Settings.WatchFolder); - } - public override DownloadClientStatus GetStatus() { return new DownloadClientStatus @@ -151,7 +146,13 @@ namespace NzbDrone.Core.Download.Clients.UsenetBlackhole }; } - private void PerformTest(string folder) + public override void Test(UsenetBlackholeSettings settings) + { + PerformWriteTest(settings.NzbFolder); + PerformWriteTest(settings.WatchFolder); + } + + private void PerformWriteTest(string folder) { var testPath = Path.Combine(folder, "drone_test.txt"); _diskProvider.WriteAllText(testPath, DateTime.Now.ToString()); @@ -160,8 +161,10 @@ namespace NzbDrone.Core.Download.Clients.UsenetBlackhole public void Execute(TestUsenetBlackholeCommand message) { - PerformTest(message.NzbFolder); - PerformTest(message.WatchFolder); + var settings = new UsenetBlackholeSettings(); + settings.InjectFrom(message); + + Test(settings); } } } diff --git a/src/NzbDrone.Core/Download/DownloadClientBase.cs b/src/NzbDrone.Core/Download/DownloadClientBase.cs index 0b4da9036..2176ba21f 100644 --- a/src/NzbDrone.Core/Download/DownloadClientBase.cs +++ b/src/NzbDrone.Core/Download/DownloadClientBase.cs @@ -66,9 +66,10 @@ namespace NzbDrone.Core.Download public abstract IEnumerable GetItems(); public abstract void RemoveItem(string id); public abstract void RetryDownload(string id); - public abstract void Test(); public abstract DownloadClientStatus GetStatus(); + public abstract void Test(TSettings settings); + protected RemoteEpisode GetRemoteEpisode(String title) { var parsedEpisodeInfo = Parser.Parser.ParseTitle(title); diff --git a/src/NzbDrone.Core/Download/IDownloadClient.cs b/src/NzbDrone.Core/Download/IDownloadClient.cs index 7850ca90b..b0b3d5fb9 100644 --- a/src/NzbDrone.Core/Download/IDownloadClient.cs +++ b/src/NzbDrone.Core/Download/IDownloadClient.cs @@ -13,7 +13,6 @@ namespace NzbDrone.Core.Download IEnumerable GetItems(); void RemoveItem(string id); void RetryDownload(string id); - void Test(); DownloadClientStatus GetStatus(); }