From a36d5fae2f60eafd82cbba785c2a992f837c8c87 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Thu, 28 Apr 2011 23:06:13 -0700 Subject: [PATCH] Added ExternalNotificationProviderBase based on IndexProviderBase. --- NzbDrone.Core.Test/IndexerProviderTest.cs | 28 ++++- NzbDrone.Core/CentralDispatch.cs | 12 +- .../Model/ExternalNotificationType.cs | 14 +++ NzbDrone.Core/NzbDrone.Core.csproj | 5 + NzbDrone.Core/Parser.cs | 2 +- .../ExternalNotificationProviderBase.cs | 70 +++++++++++ .../XbmcNotificationProvider.cs | 97 +++++++++++++++ .../Providers/ExternalNotificationProvider.cs | 113 ++++++++---------- .../Providers/Indexer/IndexerProviderBase.cs | 13 +- .../Providers/Indexer/NewzbinProvider.cs | 11 +- .../Providers/Indexer/NzbMatrixProvider.cs | 11 +- .../Providers/Indexer/NzbsOrgProvider.cs | 13 +- .../Providers/Indexer/NzbsRUsProvider.cs | 13 +- NzbDrone.Core/Providers/RenameProvider.cs | 11 +- .../Repository/ExternalNotificationSetting.cs | 18 +++ NzbDrone.Web/Views/History/Index.cshtml | 2 +- 16 files changed, 336 insertions(+), 97 deletions(-) create mode 100644 NzbDrone.Core/Model/ExternalNotificationType.cs create mode 100644 NzbDrone.Core/Providers/ExternalNotification/ExternalNotificationProviderBase.cs create mode 100644 NzbDrone.Core/Providers/ExternalNotification/XbmcNotificationProvider.cs create mode 100644 NzbDrone.Core/Repository/ExternalNotificationSetting.cs diff --git a/NzbDrone.Core.Test/IndexerProviderTest.cs b/NzbDrone.Core.Test/IndexerProviderTest.cs index c7f0318b7..5fbc256ea 100644 --- a/NzbDrone.Core.Test/IndexerProviderTest.cs +++ b/NzbDrone.Core.Test/IndexerProviderTest.cs @@ -10,6 +10,7 @@ using MbUnit.Framework; using Moq; using NzbDrone.Core.Providers; using NzbDrone.Core.Providers.Core; +using NzbDrone.Core.Providers.ExternalNotification; using NzbDrone.Core.Providers.Indexer; using NzbDrone.Core.Repository; using NzbDrone.Core.Repository.Quality; @@ -151,8 +152,13 @@ namespace NzbDrone.Core.Test public class MockIndexerProvider : IndexerProviderBase { - public MockIndexerProvider(SeriesProvider seriesProvider, SeasonProvider seasonProvider, EpisodeProvider episodeProvider, ConfigProvider configProvider, HttpProvider httpProvider, IndexerProvider indexerProvider, HistoryProvider historyProvider, SabProvider sabProvider) - : base(seriesProvider, seasonProvider, episodeProvider, configProvider, httpProvider, indexerProvider, historyProvider, sabProvider) + public MockIndexerProvider(SeriesProvider seriesProvider, SeasonProvider seasonProvider, + EpisodeProvider episodeProvider, ConfigProvider configProvider, + HttpProvider httpProvider, IndexerProvider indexerProvider, + HistoryProvider historyProvider, SabProvider sabProvider, IEnumerable externalNotificationProvider) + : base(seriesProvider, seasonProvider, episodeProvider, + configProvider, httpProvider, indexerProvider, historyProvider, + sabProvider, externalNotificationProvider) { } @@ -180,8 +186,13 @@ namespace NzbDrone.Core.Test public class TestUrlIndexer : IndexerProviderBase { - public TestUrlIndexer(SeriesProvider seriesProvider, SeasonProvider seasonProvider, EpisodeProvider episodeProvider, ConfigProvider configProvider, HttpProvider httpProvider, IndexerProvider indexerProvider, HistoryProvider historyProvider, SabProvider sabProvider) - : base(seriesProvider, seasonProvider, episodeProvider, configProvider, httpProvider, indexerProvider, historyProvider, sabProvider) + public TestUrlIndexer(SeriesProvider seriesProvider, SeasonProvider seasonProvider, + EpisodeProvider episodeProvider, ConfigProvider configProvider, + HttpProvider httpProvider, IndexerProvider indexerProvider, + HistoryProvider historyProvider, SabProvider sabProvider, IEnumerable externalNotificationProvider) + : base(seriesProvider, seasonProvider, episodeProvider, + configProvider, httpProvider, indexerProvider, historyProvider, + sabProvider, externalNotificationProvider) { } @@ -203,8 +214,13 @@ namespace NzbDrone.Core.Test public class CustomParserIndexer : IndexerProviderBase { - public CustomParserIndexer(SeriesProvider seriesProvider, SeasonProvider seasonProvider, EpisodeProvider episodeProvider, ConfigProvider configProvider, HttpProvider httpProvider, IndexerProvider indexerProvider, HistoryProvider historyProvider, SabProvider sabProvider) - : base(seriesProvider, seasonProvider, episodeProvider, configProvider, httpProvider, indexerProvider, historyProvider, sabProvider) + public CustomParserIndexer(SeriesProvider seriesProvider, SeasonProvider seasonProvider, + EpisodeProvider episodeProvider, ConfigProvider configProvider, + HttpProvider httpProvider, IndexerProvider indexerProvider, + HistoryProvider historyProvider, SabProvider sabProvider, IEnumerable externalNotificationProvider) + : base(seriesProvider, seasonProvider, episodeProvider, + configProvider, httpProvider, indexerProvider, historyProvider, + sabProvider, externalNotificationProvider) { } diff --git a/NzbDrone.Core/CentralDispatch.cs b/NzbDrone.Core/CentralDispatch.cs index 4942c1191..de177162b 100644 --- a/NzbDrone.Core/CentralDispatch.cs +++ b/NzbDrone.Core/CentralDispatch.cs @@ -9,6 +9,7 @@ using NLog; using NzbDrone.Core.Instrumentation; using NzbDrone.Core.Providers; using NzbDrone.Core.Providers.Core; +using NzbDrone.Core.Providers.ExternalNotification; using NzbDrone.Core.Providers.Indexer; using NzbDrone.Core.Providers.Jobs; using NzbDrone.Core.Repository; @@ -112,11 +113,10 @@ namespace NzbDrone.Core BindIndexers(); BindJobs(); + BindExternalNotifications(); } } - - private static void BindIndexers() { _kernel.Bind().To().InSingletonScope(); @@ -138,6 +138,12 @@ namespace NzbDrone.Core _kernel.Get().StartTimer(30); } + private static void BindExternalNotifications() + { + _kernel.Bind().To().InSingletonScope(); + var notifiers = _kernel.GetAll(); + _kernel.Get().InitializeNotifiers(notifiers.ToList()); + } private static void ForceMigration(IRepository repository) { @@ -232,7 +238,5 @@ namespace NzbDrone.Core repository.Update(hd); } } - - } } \ No newline at end of file diff --git a/NzbDrone.Core/Model/ExternalNotificationType.cs b/NzbDrone.Core/Model/ExternalNotificationType.cs new file mode 100644 index 000000000..6e6de4a8c --- /dev/null +++ b/NzbDrone.Core/Model/ExternalNotificationType.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NzbDrone.Core.Model +{ + public enum ExternalNotificationType + { + Grab = 0, + Download = 1, + Rename = 2 + } +} diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 103ab582f..8ea75f9a5 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -166,8 +166,11 @@ + + + @@ -180,6 +183,7 @@ + @@ -259,6 +263,7 @@ +