diff options
Diffstat (limited to 'MediaBrowser.Model')
| -rw-r--r-- | MediaBrowser.Model/Configuration/NotificationOptions.cs | 149 | ||||
| -rw-r--r-- | MediaBrowser.Model/Configuration/ServerConfiguration.cs | 18 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/DeviceProfile.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dto/BaseItemDto.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Model/MediaBrowser.Model.csproj | 1 | ||||
| -rw-r--r-- | MediaBrowser.Model/Notifications/Notification.cs | 41 |
6 files changed, 193 insertions, 23 deletions
diff --git a/MediaBrowser.Model/Configuration/NotificationOptions.cs b/MediaBrowser.Model/Configuration/NotificationOptions.cs new file mode 100644 index 000000000..4c0c092fe --- /dev/null +++ b/MediaBrowser.Model/Configuration/NotificationOptions.cs @@ -0,0 +1,149 @@ +using System; +using System.Linq; + +namespace MediaBrowser.Model.Configuration +{ + public class NotificationOptions + { + public NotificationOption[] Options { get; set; } + + public NotificationOptions() + { + Options = new[] + { + new NotificationOption + { + Type = NotificationType.TaskFailed.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.ServerRestartRequired.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.ApplicationUpdateAvailable.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.ApplicationUpdateInstalled.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.PluginUpdateInstalled.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.PluginUninstalled.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.InstallationFailed.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.PluginInstalled.ToString(), + Enabled = true + } + }; + } + + public NotificationOption GetOptions(string type) + { + return Options.FirstOrDefault(i => string.Equals(type, i.Type, StringComparison.OrdinalIgnoreCase)); + } + + public bool IsEnabled(string type) + { + var opt = GetOptions(type); + + return opt != null && opt.Enabled; + } + + public bool IsServiceEnabled(string service, string notificationType) + { + var opt = GetOptions(notificationType); + + return opt == null || + !opt.DisabledServices.Contains(service, StringComparer.OrdinalIgnoreCase); + } + + public bool IsEnabledToMonitorUser(string type, string userId) + { + var opt = GetOptions(type); + + return opt != null && opt.Enabled && + !opt.DisabledMonitorUsers.Contains(userId, StringComparer.OrdinalIgnoreCase); + } + + public bool IsEnabledToSendToUser(string type, string userId) + { + var opt = GetOptions(type); + + return opt != null && opt.Enabled && + !opt.DisabledSendToUsers.Contains(userId, StringComparer.OrdinalIgnoreCase); + } + } + + public class NotificationOption + { + public string Type { get; set; } + + /// <summary> + /// User Ids to not monitor (it's opt out) + /// </summary> + public string[] DisabledMonitorUsers { get; set; } + + /// <summary> + /// User Ids to not send to (it's opt out) + /// </summary> + public string[] DisabledSendToUsers { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this <see cref="NotificationOption"/> is enabled. + /// </summary> + /// <value><c>true</c> if enabled; otherwise, <c>false</c>.</value> + public bool Enabled { get; set; } + + /// <summary> + /// Gets or sets the title format string. + /// </summary> + /// <value>The title format string.</value> + public string Title { get; set; } + + /// <summary> + /// Gets or sets the disabled services. + /// </summary> + /// <value>The disabled services.</value> + public string[] DisabledServices { get; set; } + + public NotificationOption() + { + DisabledServices = new string[] { }; + DisabledMonitorUsers = new string[] { }; + DisabledSendToUsers = new string[] { }; + } + } + + public enum NotificationType + { + TaskFailed, + InstallationFailed, + NewLibraryContent, + ServerRestartRequired, + ApplicationUpdateAvailable, + ApplicationUpdateInstalled, + PluginInstalled, + PluginUpdateInstalled, + PluginUninstalled, + AudioPlayback, + GamePlayback, + VideoPlayback + } +} diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 997f90187..03857d8b9 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -319,22 +319,4 @@ namespace MediaBrowser.Model.Configuration public string From { get; set; } public string To { get; set; } } - - public class NotificationOptions - { - public bool SendOnUpdates { get; set; } - public bool SendOnVideoPlayback { get; set; } - public bool SendOnAudioPlayback { get; set; } - public bool SendOnGamePlayback { get; set; } - public bool SendOnFailedTasks { get; set; } - public bool SendOnNewLibraryContent { get; set; } - public bool SendOnServerRestartRequired { get; set; } - - public NotificationOptions() - { - SendOnUpdates = true; - SendOnFailedTasks = true; - SendOnServerRestartRequired = true; - } - } } diff --git a/MediaBrowser.Model/Dlna/DeviceProfile.cs b/MediaBrowser.Model/Dlna/DeviceProfile.cs index 70285078a..b23ad876c 100644 --- a/MediaBrowser.Model/Dlna/DeviceProfile.cs +++ b/MediaBrowser.Model/Dlna/DeviceProfile.cs @@ -1,9 +1,8 @@ -using System; +using MediaBrowser.Model.MediaInfo; +using System; using System.Collections.Generic; using System.Linq; using System.Xml.Serialization; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.Model.Dlna { diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index c13e1d2d0..a4bb0646a 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -113,6 +113,8 @@ namespace MediaBrowser.Model.Dto /// <value>The critic rating summary.</value> public string CriticRatingSummary { get; set; } + public List<string> MultiPartGameFiles { get; set; } + /// <summary> /// Gets or sets the path. /// </summary> diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index c22688b33..710e5f6b4 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -64,6 +64,7 @@ <Compile Include="Configuration\DlnaOptions.cs" /> <Compile Include="Configuration\MetadataPlugin.cs" /> <Compile Include="Configuration\MetadataOptions.cs" /> + <Compile Include="Configuration\NotificationOptions.cs" /> <Compile Include="Configuration\ServerConfiguration.cs" /> <Compile Include="Dlna\CodecProfile.cs" /> <Compile Include="Dlna\ConditionProcessor.cs" /> diff --git a/MediaBrowser.Model/Notifications/Notification.cs b/MediaBrowser.Model/Notifications/Notification.cs index 511227cbf..9b42d8a74 100644 --- a/MediaBrowser.Model/Notifications/Notification.cs +++ b/MediaBrowser.Model/Notifications/Notification.cs @@ -18,7 +18,7 @@ namespace MediaBrowser.Model.Notifications public string Description { get; set; } public string Url { get; set; } - + public NotificationLevel Level { get; set; } public Notification() @@ -40,11 +40,48 @@ namespace MediaBrowser.Model.Notifications public List<string> UserIds { get; set; } public DateTime Date { get; set; } - + + /// <summary> + /// The corresponding type name used in configuration. Not for display. + /// </summary> + public string NotificationType { get; set; } + + public Dictionary<string, string> Variables { get; set; } + public NotificationRequest() { UserIds = new List<string>(); Date = DateTime.UtcNow; + + Variables = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); } } + + public class NotificationTypeInfo + { + public string Type { get; set; } + + public string Name { get; set; } + + public bool Enabled { get; set; } + + public string Category { get; set; } + + public bool IsBasedOnUserEvent { get; set; } + + public string DefaultTitle { get; set; } + + public List<string> Variables { get; set; } + + public NotificationTypeInfo() + { + Variables = new List<string>(); + } + } + + public class NotificationServiceInfo + { + public string Name { get; set; } + public string Id { get; set; } + } } |
