using System; using NLog; using NzbDrone.Core.Model; using NzbDrone.Core.Providers.Core; using NzbDrone.Core.Repository; namespace NzbDrone.Core.Providers.ExternalNotification { public abstract class ExternalNotificationProviderBase { protected readonly Logger _logger; protected readonly ConfigProvider _configProvider; protected readonly ExternalNotificationProvider _externalNotificationProvider; protected ExternalNotificationProviderBase(ConfigProvider configProvider, ExternalNotificationProvider externalNotificationProvider) { _configProvider = configProvider; _externalNotificationProvider = externalNotificationProvider; _logger = LogManager.GetLogger(GetType().ToString()); } /// /// Gets the name for the notification provider /// public abstract string Name { get; } public ExternalNotificationSetting Settings { get { return _externalNotificationProvider.GetSettings(GetType()); } } public virtual void Notify(ExternalNotificationType type, string message, int seriesId = 0) { if (type == ExternalNotificationType.Grab) OnGrab(message); else if (type == ExternalNotificationType.Download) { throw new NotImplementedException(); var series = new Series(); OnDownload(message, series); } else if (type == ExternalNotificationType.Rename) { throw new NotImplementedException(); var series = new Series(); OnRename(message, series); } } /// /// Performs the on grab action /// /// The message to send to the receiver public abstract void OnGrab(string message); /// /// Performs the on download action /// /// The message to send to the receiver /// The Series for the new download public abstract void OnDownload(string message, Series series); /// /// Performs the on rename action /// /// The message to send to the receiver /// The Series for the new download public abstract void OnRename(string message, Series series); } }