From 97fa0ef0d309bf5d6f0d6b921567e0a189900a5d Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sun, 18 Nov 2012 18:17:00 -0800 Subject: [PATCH 1/4] Rmeove illegal characters Fixed: Remove illegal characters when saving blackhole and pneumatic downloads --- .../DownloadClientTests/BlackholeProviderFixture.cs | 10 ++++++++++ .../DownloadClientTests/PneumaticProviderFixture.cs | 12 ++++++++++++ .../Providers/DownloadClients/BlackholeProvider.cs | 4 ++-- .../Providers/DownloadClients/PneumaticProvider.cs | 2 ++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/BlackholeProviderFixture.cs b/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/BlackholeProviderFixture.cs index 0f8a5be95..ec867c3ac 100644 --- a/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/BlackholeProviderFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/BlackholeProviderFixture.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Net; using System.Text; @@ -67,6 +68,15 @@ namespace NzbDrone.Core.Test.ProviderTests.DownloadClientTests ExceptionVerification.ExpectedWarns(1); } + [Test] + public void should_replace_illegal_characters_in_title() + { + var illegalTitle = "Saturday Night Live - S38E08 - Jeremy Renner/Maroon 5 [SDTV]"; + var expectedFilename = Path.Combine(blackHoleFolder, "Saturday Night Live - S38E08 - Jeremy Renner+Maroon 5 [SDTV].nzb"); + Mocker.Resolve().DownloadNzb(nzbUrl, illegalTitle).Should().BeTrue(); + + Mocker.GetMock().Verify(c => c.DownloadFile(It.IsAny(), expectedFilename), Times.Once()); + } } } diff --git a/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/PneumaticProviderFixture.cs b/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/PneumaticProviderFixture.cs index 293b7697e..540389362 100644 --- a/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/PneumaticProviderFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/DownloadClientTests/PneumaticProviderFixture.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Net; using System.Text; @@ -75,5 +76,16 @@ namespace NzbDrone.Core.Test.ProviderTests.DownloadClientTests { Mocker.Resolve().DownloadNzb(nzbUrl, "30 Rock - Season 1").Should().BeFalse(); } + + [Test] + public void should_replace_illegal_characters_in_title() + { + var illegalTitle = "Saturday Night Live - S38E08 - Jeremy Renner/Maroon 5 [SDTV]"; + var expectedFilename = Path.Combine(pneumaticFolder, "Saturday Night Live - S38E08 - Jeremy Renner+Maroon 5 [SDTV].nzb"); + + Mocker.Resolve().DownloadNzb(nzbUrl, illegalTitle).Should().BeTrue(); + + Mocker.GetMock().Verify(c => c.DownloadFile(It.IsAny(), expectedFilename), Times.Once()); + } } } diff --git a/NzbDrone.Core/Providers/DownloadClients/BlackholeProvider.cs b/NzbDrone.Core/Providers/DownloadClients/BlackholeProvider.cs index 836501ffb..af836cb65 100644 --- a/NzbDrone.Core/Providers/DownloadClients/BlackholeProvider.cs +++ b/NzbDrone.Core/Providers/DownloadClients/BlackholeProvider.cs @@ -38,6 +38,8 @@ namespace NzbDrone.Core.Providers.DownloadClients { try { + title = MediaFileProvider.CleanFilename(title); + var filename = Path.Combine(_configProvider.BlackholeDirectory, title + ".nzb"); if (_diskProvider.FileExists(filename)) @@ -64,7 +66,5 @@ namespace NzbDrone.Core.Providers.DownloadClients { return !_upgradeHistorySpecification.IsSatisfiedBy(newParseResult); } - - } } diff --git a/NzbDrone.Core/Providers/DownloadClients/PneumaticProvider.cs b/NzbDrone.Core/Providers/DownloadClients/PneumaticProvider.cs index 0a6e557dd..45d9acd2e 100644 --- a/NzbDrone.Core/Providers/DownloadClients/PneumaticProvider.cs +++ b/NzbDrone.Core/Providers/DownloadClients/PneumaticProvider.cs @@ -44,6 +44,8 @@ namespace NzbDrone.Core.Providers.DownloadClients return false; } + title = MediaFileProvider.CleanFilename(title); + //Save to the Pneumatic directory (The user will need to ensure its accessible by XBMC) var filename = Path.Combine(_configProvider.PneumaticDirectory, title + ".nzb"); From 82f0751a150fafaeb3cd92be379417c13b8f1bc5 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sun, 18 Nov 2012 18:39:16 -0800 Subject: [PATCH 2/4] Search History Force Download Fixed: Issue with Force Download in Search History --- NzbDrone.Web/Controllers/SearchHistoryController.cs | 2 +- NzbDrone.Web/Views/SearchHistory/Details.cshtml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/NzbDrone.Web/Controllers/SearchHistoryController.cs b/NzbDrone.Web/Controllers/SearchHistoryController.cs index 96c696e33..15916a9d8 100644 --- a/NzbDrone.Web/Controllers/SearchHistoryController.cs +++ b/NzbDrone.Web/Controllers/SearchHistoryController.cs @@ -68,7 +68,7 @@ namespace NzbDrone.Web.Controllers { _searchHistoryProvider.ForceDownload(id); - return new JsonResult { Data = "ok", JsonRequestBehavior = JsonRequestBehavior.AllowGet }; + return JsonNotificationResult.Info("Success", "Requested episode has been sent to download client"); } public string GetDisplayName(SearchHistory searchResult) diff --git a/NzbDrone.Web/Views/SearchHistory/Details.cshtml b/NzbDrone.Web/Views/SearchHistory/Details.cshtml index 01bf9674d..2aa409d0f 100644 --- a/NzbDrone.Web/Views/SearchHistory/Details.cshtml +++ b/NzbDrone.Web/Views/SearchHistory/Details.cshtml @@ -38,7 +38,7 @@ function actionColumn(source, type, val) { if (type === 'display' || type === 'filter') { - return ''; + return ''; } // 'sort' and 'type' both just use the raw data return ''; From 6897d44b383f421db7ece226ee45ae9efbf41f6b Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Mon, 19 Nov 2012 15:16:25 -0800 Subject: [PATCH 3/4] Search History qualioty sort by weight, not ID --- NzbDrone.Web/Controllers/SearchHistoryController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NzbDrone.Web/Controllers/SearchHistoryController.cs b/NzbDrone.Web/Controllers/SearchHistoryController.cs index 15916a9d8..0e9f35d3a 100644 --- a/NzbDrone.Web/Controllers/SearchHistoryController.cs +++ b/NzbDrone.Web/Controllers/SearchHistoryController.cs @@ -53,7 +53,7 @@ namespace NzbDrone.Web.Controllers Success = s.Success, SearchError = s.SearchError.AddSpacesToEnum().Replace("None", "Grabbed"), Quality = s.Quality.ToString(), - QualityInt = (int)s.Quality, + QualityInt = s.Quality.Weight, Proper = s.Proper, Age = s.Age, Size = s.Size.ToBestFileSize(1), From dda7868215e6f4d5877d643211c7867ffd6f19d7 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 21 Nov 2012 08:14:57 -0800 Subject: [PATCH 4/4] Cleaned up a bunch of warnings --- NzbDrone.Core.Test/IndexerTests.cs | 2 -- NzbDrone.Core/Parser.cs | 3 +-- NzbDrone.Core/Providers/DiskScanProvider.cs | 1 + NzbDrone.Core/Providers/NewznabProvider.cs | 1 + NzbDrone.Core/Providers/SignalRProvider.cs | 3 +-- NzbDrone.Core/Providers/SmtpProvider.cs | 1 + .../Providers/SceneMappingProvider.cs | 5 +++++ NzbDrone.Update.Test/NzbDrone.Update.Test.csproj | 4 ++-- NzbDrone.Web/Controllers/CommandController.cs | 4 ++++ 9 files changed, 16 insertions(+), 8 deletions(-) diff --git a/NzbDrone.Core.Test/IndexerTests.cs b/NzbDrone.Core.Test/IndexerTests.cs index e2a14f3bb..47e549b62 100644 --- a/NzbDrone.Core.Test/IndexerTests.cs +++ b/NzbDrone.Core.Test/IndexerTests.cs @@ -596,7 +596,6 @@ namespace NzbDrone.Core.Test WithConfiguredIndexers(); const string fileName = "wombles.xml"; - const string expectedString = "nzbdetails"; Mocker.GetMock() .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny())) @@ -635,7 +634,6 @@ namespace NzbDrone.Core.Test { WithConfiguredIndexers(); - const string fileName = "nzbindex.xml"; const string expectedString = "release"; Mocker.GetMock() diff --git a/NzbDrone.Core/Parser.cs b/NzbDrone.Core/Parser.cs index e6da55dc7..04bc153ce 100644 --- a/NzbDrone.Core/Parser.cs +++ b/NzbDrone.Core/Parser.cs @@ -220,8 +220,7 @@ namespace NzbDrone.Core } parsedEpisode = new EpisodeParseResult - { - + { AirDate = new DateTime(airyear, airmonth, airday).Date, }; } diff --git a/NzbDrone.Core/Providers/DiskScanProvider.cs b/NzbDrone.Core/Providers/DiskScanProvider.cs index f51e6e95b..a780756ab 100644 --- a/NzbDrone.Core/Providers/DiskScanProvider.cs +++ b/NzbDrone.Core/Providers/DiskScanProvider.cs @@ -206,6 +206,7 @@ namespace NzbDrone.Core.Providers catch (UnauthorizedAccessException ex) { Logger.Debug("Unable to apply folder permissions to: ", newFile.FullName); + Logger.TraceException(ex.Message, ex); } episodeFile.Path = newFile.FullName; diff --git a/NzbDrone.Core/Providers/NewznabProvider.cs b/NzbDrone.Core/Providers/NewznabProvider.cs index f789c973f..b3eab5b7b 100644 --- a/NzbDrone.Core/Providers/NewznabProvider.cs +++ b/NzbDrone.Core/Providers/NewznabProvider.cs @@ -140,6 +140,7 @@ namespace NzbDrone.Core.Providers catch (Exception ex) { Logger.Error("Invalid address {0}, please correct the site URL.", url); + Logger.TraceException(ex.Message, ex); throw; } diff --git a/NzbDrone.Core/Providers/SignalRProvider.cs b/NzbDrone.Core/Providers/SignalRProvider.cs index 671c8d058..99d37372b 100644 --- a/NzbDrone.Core/Providers/SignalRProvider.cs +++ b/NzbDrone.Core/Providers/SignalRProvider.cs @@ -28,11 +28,10 @@ namespace NzbDrone.Core.Providers EpisodeStatus = episodeStatus.ToString(), Quality = (quality == null ? String.Empty : quality.Quality.ToString()) }); - var test = 0; } catch (Exception ex) { - logger.Trace("Error"); + logger.TraceException("Error", ex); throw; } } diff --git a/NzbDrone.Core/Providers/SmtpProvider.cs b/NzbDrone.Core/Providers/SmtpProvider.cs index e0f831dcc..025c23657 100644 --- a/NzbDrone.Core/Providers/SmtpProvider.cs +++ b/NzbDrone.Core/Providers/SmtpProvider.cs @@ -61,6 +61,7 @@ namespace NzbDrone.Core.Providers catch(Exception ex) { Logger.Error("Error sending email. Subject: {0}", email.Subject); + Logger.TraceException(ex.Message, ex); } } diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Providers/SceneMappingProvider.cs b/NzbDrone.Services/NzbDrone.Services.Service/Providers/SceneMappingProvider.cs index 1ff2519ef..36daef8b1 100644 --- a/NzbDrone.Services/NzbDrone.Services.Service/Providers/SceneMappingProvider.cs +++ b/NzbDrone.Services/NzbDrone.Services.Service/Providers/SceneMappingProvider.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Web; +using NLog; using NzbDrone.Services.Service.Repository; using Services.PetaPoco; @@ -11,6 +12,8 @@ namespace NzbDrone.Services.Service.Providers { private readonly IDatabase _database; + private static readonly Logger logger = LogManager.GetCurrentClassLogger(); + public SceneMappingProvider(IDatabase database) { _database = database; @@ -74,6 +77,7 @@ namespace NzbDrone.Services.Service.Providers } catch (Exception ex) { + logger.WarnException("Unable to promote scene mapping", ex); return false; } @@ -93,6 +97,7 @@ namespace NzbDrone.Services.Service.Providers } catch (Exception ex) { + logger.WarnException("Unable to promote all scene mappings", ex); return false; } diff --git a/NzbDrone.Update.Test/NzbDrone.Update.Test.csproj b/NzbDrone.Update.Test/NzbDrone.Update.Test.csproj index 16a00c2c9..acaa83dec 100644 --- a/NzbDrone.Update.Test/NzbDrone.Update.Test.csproj +++ b/NzbDrone.Update.Test/NzbDrone.Update.Test.csproj @@ -80,11 +80,11 @@ NzbDrone.Common - {CADDFCE0-7509-4430-8364-2074E1EEFCA2} + {caddfce0-7509-4430-8364-2074e1eefca2} NzbDrone.Test.Common - {4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7} + {4ccc53cd-8d5e-4cc4-97d2-5c9312ac2bd7} NzbDrone.Update diff --git a/NzbDrone.Web/Controllers/CommandController.cs b/NzbDrone.Web/Controllers/CommandController.cs index bc1b0cf68..1bfe2ee50 100644 --- a/NzbDrone.Web/Controllers/CommandController.cs +++ b/NzbDrone.Web/Controllers/CommandController.cs @@ -1,4 +1,5 @@ using System.Web.Mvc; +using NLog; using NzbDrone.Core.Jobs; using NzbDrone.Core.Providers; using NzbDrone.Core.Providers.DownloadClients; @@ -21,6 +22,8 @@ namespace NzbDrone.Web.Controllers private readonly XbmcProvider _xbmcProvider; private readonly PlexProvider _plexProvider; + private static readonly Logger logger = LogManager.GetCurrentClassLogger(); + public CommandController(JobProvider jobProvider, SabProvider sabProvider, SmtpProvider smtpProvider, TwitterProvider twitterProvider, EpisodeProvider episodeProvider, GrowlProvider growlProvider, @@ -133,6 +136,7 @@ namespace NzbDrone.Web.Controllers } catch(Exception ex) { + logger.TraceException(ex.Message, ex); return JsonNotificationResult.Oops("Couldn't register and test Growl"); } }