aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Dlna/ContainerProfile.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model/Dlna/ContainerProfile.cs')
-rw-r--r--MediaBrowser.Model/Dlna/ContainerProfile.cs101
1 files changed, 101 insertions, 0 deletions
diff --git a/MediaBrowser.Model/Dlna/ContainerProfile.cs b/MediaBrowser.Model/Dlna/ContainerProfile.cs
new file mode 100644
index 000000000..3fb0682b0
--- /dev/null
+++ b/MediaBrowser.Model/Dlna/ContainerProfile.cs
@@ -0,0 +1,101 @@
+using System;
+using System.Collections.Generic;
+using System.Xml.Serialization;
+using MediaBrowser.Model.Dlna;
+using MediaBrowser.Model.Extensions;
+
+namespace MediaBrowser.Model.Dlna
+{
+ public class ContainerProfile
+ {
+ [XmlAttribute("type")]
+ public DlnaProfileType Type { get; set; }
+ public ProfileCondition[] Conditions { get; set; }
+
+ [XmlAttribute("container")]
+ public string Container { get; set; }
+
+ public ContainerProfile()
+ {
+ Conditions = new ProfileCondition[] { };
+ }
+
+ public string[] GetContainers()
+ {
+ return SplitValue(Container);
+ }
+
+ private static readonly string[] EmptyStringArray = Array.Empty<string>();
+
+ public static string[] SplitValue(string value)
+ {
+ if (string.IsNullOrEmpty(value))
+ {
+ return EmptyStringArray;
+ }
+
+ return value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
+ }
+
+ public bool ContainsContainer(string container)
+ {
+ var containers = GetContainers();
+
+ return ContainsContainer(containers, container);
+ }
+
+ public static bool ContainsContainer(string profileContainers, string inputContainer)
+ {
+ var isNegativeList = false;
+ if (profileContainers != null && profileContainers.StartsWith("-"))
+ {
+ isNegativeList = true;
+ profileContainers = profileContainers.Substring(1);
+ }
+
+ return ContainsContainer(SplitValue(profileContainers), isNegativeList, inputContainer);
+ }
+
+ public static bool ContainsContainer(string[] profileContainers, string inputContainer)
+ {
+ return ContainsContainer(profileContainers, false, inputContainer);
+ }
+
+ public static bool ContainsContainer(string[] profileContainers, bool isNegativeList, string inputContainer)
+ {
+ if (profileContainers.Length == 0)
+ {
+ return true;
+ }
+
+ if (isNegativeList)
+ {
+ var allInputContainers = SplitValue(inputContainer);
+
+ foreach (var container in allInputContainers)
+ {
+ if (ListHelper.ContainsIgnoreCase(profileContainers, container))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ else
+ {
+ var allInputContainers = SplitValue(inputContainer);
+
+ foreach (var container in allInputContainers)
+ {
+ if (ListHelper.ContainsIgnoreCase(profileContainers, container))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ }
+ }
+}