From 3fe1e80ccb8da0bb1d0e272d01c12ebce2ec36e0 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Tue, 1 Nov 2011 20:08:53 -0700 Subject: [PATCH] Added Growl (Not yet visible on the GUI). --- NzbDrone.Core.Test/NzbDrone.Core.Test.csproj | 1 + .../ProviderTests/GrowlProviderTest.cs | 73 ++++++++++++++++ NzbDrone.Core/CentralDispatch.cs | 2 +- NzbDrone.Core/NzbDrone.Core.csproj | 12 +++ NzbDrone.Core/NzbDrone.ico | Bin 0 -> 77302 bytes .../Providers/Core/ConfigProvider.cs | 26 ++++++ .../Providers/ExternalNotification/Growl.cs | 78 ++++++++++++++++++ NzbDrone.Core/Providers/GrowlProvider.cs | 61 ++++++++++++++ .../Providers/Xbmc/ResourceManager.cs | 2 +- NzbDrone.Core/license.txt | 25 ++++++ NzbDrone.Core/packages.config | 1 + packages/Growl.0.6/Growl.0.6.nupkg | Bin 0 -> 42800 bytes packages/Growl.0.6/content/GrowlHelper.cs.pp | 23 ++++++ packages/Growl.0.6/content/license.txt | 25 ++++++ packages/Growl.0.6/lib/Growl.Connector.dll | Bin 0 -> 61440 bytes packages/Growl.0.6/lib/Growl.CoreLibrary.dll | Bin 0 -> 28672 bytes 16 files changed, 327 insertions(+), 2 deletions(-) create mode 100644 NzbDrone.Core.Test/ProviderTests/GrowlProviderTest.cs create mode 100644 NzbDrone.Core/NzbDrone.ico create mode 100644 NzbDrone.Core/Providers/ExternalNotification/Growl.cs create mode 100644 NzbDrone.Core/Providers/GrowlProvider.cs create mode 100644 NzbDrone.Core/license.txt create mode 100644 packages/Growl.0.6/Growl.0.6.nupkg create mode 100644 packages/Growl.0.6/content/GrowlHelper.cs.pp create mode 100644 packages/Growl.0.6/content/license.txt create mode 100644 packages/Growl.0.6/lib/Growl.Connector.dll create mode 100644 packages/Growl.0.6/lib/Growl.CoreLibrary.dll diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index 27c9875a0..29f1ff7b5 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -80,6 +80,7 @@ + diff --git a/NzbDrone.Core.Test/ProviderTests/GrowlProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/GrowlProviderTest.cs new file mode 100644 index 000000000..a7586aa7f --- /dev/null +++ b/NzbDrone.Core.Test/ProviderTests/GrowlProviderTest.cs @@ -0,0 +1,73 @@ +using System; +using AutoMoq; +using FizzWare.NBuilder; +using FluentAssertions; +using Moq; +using NUnit.Framework; +using NzbDrone.Core.Model; +using NzbDrone.Core.Providers; +using NzbDrone.Core.Repository; +using NzbDrone.Core.Repository.Quality; +using NzbDrone.Core.Test.Framework; + +// ReSharper disable InconsistentNaming + +namespace NzbDrone.Core.Test.ProviderTests +{ + [Explicit] + [TestFixture] + public class GrowlProviderTest : TestBase + { + [Test] + public void Register_should_add_new_application_to_local_growl_instance() + { + //Setup + var mocker = new AutoMoqer(MockBehavior.Strict); + + //Act + mocker.Resolve().Register("localhost", 23053, ""); + + //Assert + mocker.VerifyAllMocks(); + } + + [Test] + public void TestNotification_should_send_a_message_to_local_growl_instance() + { + //Setup + var mocker = new AutoMoqer(MockBehavior.Strict); + + //Act + mocker.Resolve().TestNotification("localhost", 23053, ""); + + //Assert + mocker.VerifyAllMocks(); + } + + [Test] + public void OnGrab_should_send_a_message_to_local_growl_instance() + { + //Setup + var mocker = new AutoMoqer(MockBehavior.Strict); + + //Act + mocker.Resolve().SendNotification("Episode Grabbed", "Series Title - 1x05 - Episode Title", "GRAB", "localhost", 23053, ""); + + //Assert + mocker.VerifyAllMocks(); + } + + [Test] + public void OnDownload_should_send_a_message_to_local_growl_instance() + { + //Setup + var mocker = new AutoMoqer(MockBehavior.Strict); + + //Act + mocker.Resolve().SendNotification("Episode Downloaded", "Series Title - 1x05 - Episode Title", "DOWNLOAD", "localhost", 23053, ""); + + //Assert + mocker.VerifyAllMocks(); + } + } +} \ No newline at end of file diff --git a/NzbDrone.Core/CentralDispatch.cs b/NzbDrone.Core/CentralDispatch.cs index 276551bf1..2e950e7af 100644 --- a/NzbDrone.Core/CentralDispatch.cs +++ b/NzbDrone.Core/CentralDispatch.cs @@ -35,7 +35,6 @@ namespace NzbDrone.Core } } - public static void InitializeApp() { BindKernel(); @@ -107,6 +106,7 @@ namespace NzbDrone.Core _kernel.Bind().To(); _kernel.Bind().To(); _kernel.Bind().To(); + _kernel.Bind().To(); var notifiers = _kernel.GetAll(); _kernel.Get().InitializeNotifiers(notifiers.ToList()); diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index fe08841d8..999ed1f31 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -125,6 +125,12 @@ False ..\Libraries\Exceptioneer.WindowsFormsClient.dll + + ..\packages\Growl.0.6\lib\Growl.Connector.dll + + + ..\packages\Growl.0.6\lib\Growl.CoreLibrary.dll + ..\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll @@ -221,8 +227,10 @@ + + @@ -352,6 +360,10 @@ NzbDrone.Common + + + + diff --git a/NzbDrone.Core/NzbDrone.ico b/NzbDrone.Core/NzbDrone.ico new file mode 100644 index 0000000000000000000000000000000000000000..1d6e4d3f4004b4dba634c2cd8b6b5d162c2378dd GIT binary patch literal 77302 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Providers/Core/ConfigProvider.cs b/NzbDrone.Core/Providers/Core/ConfigProvider.cs index a10bccc6d..10a8df3e0 100644 --- a/NzbDrone.Core/Providers/Core/ConfigProvider.cs +++ b/NzbDrone.Core/Providers/Core/ConfigProvider.cs @@ -338,6 +338,32 @@ namespace NzbDrone.Core.Providers.Core set { SetValue("TwitterAccessTokenSecret", value); } } + public virtual Boolean GrowlNotifyOnGrab + { + get { return GetValueBoolean("GrowlNotifyOnGrab"); } + + set { SetValue("GrowlNotifyOnGrab", value); } + } + + public virtual Boolean GrowlNotifyOnDownload + { + get { return GetValueBoolean("GrowlNotifyOnDownload"); } + + set { SetValue("GrowlNotifyOnDownload", value); } + } + + public virtual string GrowlHost + { + get { return GetValue("GrowlHost", String.Empty); } + set { SetValue("GrowlHost", value); } + } + + public virtual string GrowlPassword + { + get { return GetValue("GrowlPassword", String.Empty); } + set { SetValue("GrowlPassword", value); } + } + private string GetValue(string key) { return GetValue(key, String.Empty); diff --git a/NzbDrone.Core/Providers/ExternalNotification/Growl.cs b/NzbDrone.Core/Providers/ExternalNotification/Growl.cs new file mode 100644 index 000000000..d4e887dd2 --- /dev/null +++ b/NzbDrone.Core/Providers/ExternalNotification/Growl.cs @@ -0,0 +1,78 @@ +using System; +using NLog; +using NzbDrone.Core.Providers.Core; +using NzbDrone.Core.Repository; + +namespace NzbDrone.Core.Providers.ExternalNotification +{ + public class Growl : ExternalNotificationBase + { + private readonly GrowlProvider _growlProvider; + + private readonly Logger Logger = LogManager.GetCurrentClassLogger(); + + public Growl(ConfigProvider configProvider, GrowlProvider growlProvider) + : base(configProvider) + { + _growlProvider = growlProvider; + } + + public override string Name + { + get { return "Growl"; } + } + + public override void OnGrab(string message) + { + try + { + if(_configProvider.GrowlNotifyOnGrab) + { + _logger.Trace("Sending Notification to Growl"); + const string title = "Episode Grabbed"; + + var growlHost = _configProvider.GrowlHost.Split(':'); + var host = growlHost[0]; + var port = Convert.ToInt32(growlHost[1]); + + _growlProvider.SendNotification(title, message, host, "GRAB", port, _configProvider.GrowlPassword); + } + } + + catch (Exception ex) + { + Logger.WarnException(ex.Message, ex); + throw; + } + } + + public override void OnDownload(string message, Series series) + { + try + { + if (_configProvider.GrowlNotifyOnDownload) + { + _logger.Trace("Sending Notification to Growl"); + const string title = "Episode Downloaded"; + + var growlHost = _configProvider.GrowlHost.Split(':'); + var host = growlHost[0]; + var port = Convert.ToInt32(growlHost[1]); + + _growlProvider.SendNotification(title, message, host, "DOWNLOAD", port, _configProvider.GrowlPassword); + } + } + + catch (Exception ex) + { + Logger.WarnException(ex.Message, ex); + throw; + } + } + + public override void OnRename(string message, Series series) + { + + } + } +} diff --git a/NzbDrone.Core/Providers/GrowlProvider.cs b/NzbDrone.Core/Providers/GrowlProvider.cs new file mode 100644 index 000000000..cc1dd44db --- /dev/null +++ b/NzbDrone.Core/Providers/GrowlProvider.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Growl.Connector; +using NLog; + +namespace NzbDrone.Core.Providers +{ + public class GrowlProvider + { + private readonly Logger Logger = LogManager.GetCurrentClassLogger(); + + private readonly Application _growlApplication = new Application("NzbDrone"); + private GrowlConnector _growlConnector; + private List _notificationTypes; + + public GrowlProvider() + { + _notificationTypes = GetNotificationTypes(); + _growlApplication.Icon = "https://github.com/NzbDrone/NzbDrone/raw/master/NzbDrone.Core/NzbDrone.jpg"; + } + + public virtual void Register(string hostname, int port, string password) + { + Logger.Trace("Registering NzbDrone with Growl host: {0}:{1}", hostname, port); + _growlConnector = new GrowlConnector(password, hostname, port); + _growlConnector.Register(_growlApplication, _notificationTypes.ToArray()); + } + + public virtual void TestNotification(string hostname, int port, string password) + { + const string title = "Test Notification"; + const string message = "This is a test message from NzbDrone"; + + SendNotification(title, message, "TEST", hostname, port, password); + } + + public virtual void SendNotification(string title, string message, string notificationTypeName, string hostname, int port, string password) + { + var notificationType = _notificationTypes.Single(n => n.Name == notificationTypeName); + + var notification = new Notification("NzbDrone", notificationType.Name, DateTime.Now.Ticks.ToString(), title, message); + + _growlConnector = new GrowlConnector(password, hostname, port); + + Logger.Trace("Sending Notification to: {0}:{1}", hostname, port); + _growlConnector.Notify(notification); + } + + private List GetNotificationTypes() + { + var notificationTypes = new List(); + notificationTypes.Add(new NotificationType("TEST", "Test")); + notificationTypes.Add(new NotificationType("GRAB", "Episode Grabbed")); + notificationTypes.Add(new NotificationType("DOWNLOAD", "Episode Complete")); + + return notificationTypes; + } + } +} diff --git a/NzbDrone.Core/Providers/Xbmc/ResourceManager.cs b/NzbDrone.Core/Providers/Xbmc/ResourceManager.cs index 0e8e7c548..7a9daefd2 100644 --- a/NzbDrone.Core/Providers/Xbmc/ResourceManager.cs +++ b/NzbDrone.Core/Providers/Xbmc/ResourceManager.cs @@ -37,7 +37,7 @@ public static System.Drawing.Bitmap GetIconAsImage(string Name) { - System.IO.Stream stm = typeof(ResourceManager).Assembly.GetManifestResourceStream(string.Format("{0}.Icons.{1}.ico", typeof(ResourceManager).Namespace, Name)); + System.IO.Stream stm = typeof(ResourceManager).Assembly.GetManifestResourceStream(string.Format("NzbDrone.Core.{0}.ico", Name)); if (stm == null) return null; System.Drawing.Bitmap bmp; using (System.Drawing.Icon ico = new System.Drawing.Icon(stm)) diff --git a/NzbDrone.Core/license.txt b/NzbDrone.Core/license.txt new file mode 100644 index 000000000..630a2961e --- /dev/null +++ b/NzbDrone.Core/license.txt @@ -0,0 +1,25 @@ +Growl.NET GNTP Connector Library +----------------------------------------------- +Copyright (c) 2008 - Growl for Windows +All rights reserved + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + diff --git a/NzbDrone.Core/packages.config b/NzbDrone.Core/packages.config index 4d4c07386..0bdd610cd 100644 --- a/NzbDrone.Core/packages.config +++ b/NzbDrone.Core/packages.config @@ -1,6 +1,7 @@  + diff --git a/packages/Growl.0.6/Growl.0.6.nupkg b/packages/Growl.0.6/Growl.0.6.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..1d89eddd5ea4b9ff8310f424a3fc8deac3ff3bad GIT binary patch literal 42800 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

}BZlMsnt~*S8r%*Np5RU3~I1p-@Y@kRd(^ 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 literal 0 HcmV?d00001 diff --git a/packages/Growl.0.6/content/GrowlHelper.cs.pp b/packages/Growl.0.6/content/GrowlHelper.cs.pp new file mode 100644 index 000000000..b833b8cca --- /dev/null +++ b/packages/Growl.0.6/content/GrowlHelper.cs.pp @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using Growl.Connector; +using Growl.CoreLibrary; + +namespace $rootnamespace$ +{ + class GrowlHelper + { + public static void simpleGrowl(string title, string message = "") + { + GrowlConnector simpleGrowl = new GrowlConnector(); + Growl.Connector.Application thisApp = new Growl.Connector.Application(System.Windows.Forms.Application.ProductName); + NotificationType simpleGrowlType = new NotificationType("SIMPLEGROWL"); + simpleGrowl.Register(thisApp, new NotificationType[] { simpleGrowlType }); + Notification myGrowl = new Notification(System.Windows.Forms.Application.ProductName, "SIMPLEGROWL", title, title, message); + simpleGrowl.Notify(myGrowl); + } + } +} diff --git a/packages/Growl.0.6/content/license.txt b/packages/Growl.0.6/content/license.txt new file mode 100644 index 000000000..630a2961e --- /dev/null +++ b/packages/Growl.0.6/content/license.txt @@ -0,0 +1,25 @@ +Growl.NET GNTP Connector Library +----------------------------------------------- +Copyright (c) 2008 - Growl for Windows +All rights reserved + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + diff --git a/packages/Growl.0.6/lib/Growl.Connector.dll b/packages/Growl.0.6/lib/Growl.Connector.dll new file mode 100644 index 0000000000000000000000000000000000000000..01c0c59f6b4178f61c4996f47735bedcd39fa963 GIT binary patch literal 61440 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 literal 0 HcmV?d00001 diff --git a/packages/Growl.0.6/lib/Growl.CoreLibrary.dll b/packages/Growl.0.6/lib/Growl.CoreLibrary.dll new file mode 100644 index 0000000000000000000000000000000000000000..ca1545cfff5d9d070d50ea805ac178fac4afde05 GIT binary patch literal 28672 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 literal 0 HcmV?d00001