From 45208e528f19887c8fc85401bdba59685b4f722b Mon Sep 17 00:00:00 2001 From: Drewster727 Date: Mon, 28 Mar 2016 13:27:10 -0500 Subject: [PATCH] #96 modify notifications interface/service to accept a non-type specific settings object. --- PlexRequests.Services/Interfaces/INotification.cs | 2 +- .../Interfaces/INotificationService.cs | 2 +- .../Notification/EmailMessageNotification.cs | 12 +++++++----- .../Notification/NotificationService.cs | 4 ++-- .../Notification/PushbulletNotification.cs | 2 +- .../Notification/PushoverNotification.cs | 2 +- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/PlexRequests.Services/Interfaces/INotification.cs b/PlexRequests.Services/Interfaces/INotification.cs index 2ee0b4f35..2e4e55ea4 100644 --- a/PlexRequests.Services/Interfaces/INotification.cs +++ b/PlexRequests.Services/Interfaces/INotification.cs @@ -37,6 +37,6 @@ namespace PlexRequests.Services.Interfaces Task NotifyAsync(NotificationModel model); - Task NotifyAsync(NotificationModel model, EmailNotificationSettings settings); + Task NotifyAsync(NotificationModel model, Settings settings); } } \ No newline at end of file diff --git a/PlexRequests.Services/Interfaces/INotificationService.cs b/PlexRequests.Services/Interfaces/INotificationService.cs index 14408b031..91563c6de 100644 --- a/PlexRequests.Services/Interfaces/INotificationService.cs +++ b/PlexRequests.Services/Interfaces/INotificationService.cs @@ -34,7 +34,7 @@ namespace PlexRequests.Services.Interfaces public interface INotificationService { Task Publish(NotificationModel model); - Task Publish(NotificationModel model, EmailNotificationSettings settings); + Task Publish(NotificationModel model, Settings settings); void Subscribe(INotification notification); void UnSubscribe(INotification notification); diff --git a/PlexRequests.Services/Notification/EmailMessageNotification.cs b/PlexRequests.Services/Notification/EmailMessageNotification.cs index c247eed0a..ca0d581cd 100644 --- a/PlexRequests.Services/Notification/EmailMessageNotification.cs +++ b/PlexRequests.Services/Notification/EmailMessageNotification.cs @@ -54,11 +54,13 @@ namespace PlexRequests.Services.Notification await NotifyAsync(model, configuration); } - public async Task NotifyAsync(NotificationModel model, EmailNotificationSettings settings) + public async Task NotifyAsync(NotificationModel model, Settings settings) { if (settings == null) await NotifyAsync(model); - if (!ValidateConfiguration(settings)) + var emailSettings = (EmailNotificationSettings)settings; + + if (!ValidateConfiguration(emailSettings)) { return; } @@ -66,10 +68,10 @@ namespace PlexRequests.Services.Notification switch (model.NotificationType) { case NotificationType.NewRequest: - await EmailNewRequest(model, settings); + await EmailNewRequest(model, emailSettings); break; case NotificationType.Issue: - await EmailIssue(model, settings); + await EmailIssue(model, emailSettings); break; case NotificationType.RequestAvailable: throw new NotImplementedException(); @@ -81,7 +83,7 @@ namespace PlexRequests.Services.Notification throw new NotImplementedException(); case NotificationType.Test: - await EmailTest(model, settings); + await EmailTest(model, emailSettings); break; default: diff --git a/PlexRequests.Services/Notification/NotificationService.cs b/PlexRequests.Services/Notification/NotificationService.cs index c65ad8a1d..8477a2159 100644 --- a/PlexRequests.Services/Notification/NotificationService.cs +++ b/PlexRequests.Services/Notification/NotificationService.cs @@ -48,7 +48,7 @@ namespace PlexRequests.Services.Notification await Task.WhenAll(notificationTasks).ConfigureAwait(false); } - public async Task Publish(NotificationModel model, EmailNotificationSettings settings) + public async Task Publish(NotificationModel model, Settings settings) { var notificationTasks = Observers.Values.Select(notification => NotifyAsync(notification, model, settings)); @@ -72,7 +72,7 @@ namespace PlexRequests.Services.Notification } - private static async Task NotifyAsync(INotification notification, NotificationModel model, EmailNotificationSettings settings) + private static async Task NotifyAsync(INotification notification, NotificationModel model, Settings settings) { try { diff --git a/PlexRequests.Services/Notification/PushbulletNotification.cs b/PlexRequests.Services/Notification/PushbulletNotification.cs index f71d6d5e0..aed796fc1 100644 --- a/PlexRequests.Services/Notification/PushbulletNotification.cs +++ b/PlexRequests.Services/Notification/PushbulletNotification.cs @@ -129,7 +129,7 @@ namespace PlexRequests.Services.Notification } } - public Task NotifyAsync(NotificationModel model, EmailNotificationSettings settings) + public Task NotifyAsync(NotificationModel model, Settings settings) { throw new NotImplementedException(); } diff --git a/PlexRequests.Services/Notification/PushoverNotification.cs b/PlexRequests.Services/Notification/PushoverNotification.cs index 5e3cc3944..ef3671014 100644 --- a/PlexRequests.Services/Notification/PushoverNotification.cs +++ b/PlexRequests.Services/Notification/PushoverNotification.cs @@ -127,7 +127,7 @@ namespace PlexRequests.Services.Notification } } - public Task NotifyAsync(NotificationModel model, EmailNotificationSettings settings) + public Task NotifyAsync(NotificationModel model, Settings settings) { throw new NotImplementedException(); }