aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model')
-rw-r--r--MediaBrowser.Model/Configuration/NotificationOptions.cs149
-rw-r--r--MediaBrowser.Model/Configuration/ServerConfiguration.cs18
-rw-r--r--MediaBrowser.Model/Dlna/DeviceProfile.cs5
-rw-r--r--MediaBrowser.Model/Dto/BaseItemDto.cs2
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj1
-rw-r--r--MediaBrowser.Model/Notifications/Notification.cs41
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; }
+ }
}