소스 검색

Merge pull request #9351 from Shadowghost/condition-fix

Bond-009 2 년 전
부모
커밋
e8b0ae07af
1개의 변경된 파일34개의 추가작업 그리고 5개의 파일을 삭제
  1. 34 5
      MediaBrowser.Model/Dlna/ConditionProcessor.cs

+ 34 - 5
MediaBrowser.Model/Dlna/ConditionProcessor.cs

@@ -136,12 +136,26 @@ namespace MediaBrowser.Model.Dlna
                 return !condition.IsRequired;
                 return !condition.IsRequired;
             }
             }
 
 
-            if (int.TryParse(condition.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out var expected))
+            var conditionType = condition.Condition;
+            if (condition.Condition == ProfileConditionType.EqualsAny)
             {
             {
-                switch (condition.Condition)
+                foreach (var singleConditionString in condition.Value.AsSpan().Split('|'))
+                {
+                    if (int.TryParse(singleConditionString, NumberStyles.Integer, CultureInfo.InvariantCulture, out int conditionValue)
+                        && conditionValue.Equals(currentValue))
+                    {
+                        return true;
+                    }
+                }
+
+                return false;
+            }
+
+            if (int.TryParse(condition.Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var expected))
+            {
+                switch (conditionType)
                 {
                 {
                     case ProfileConditionType.Equals:
                     case ProfileConditionType.Equals:
-                    case ProfileConditionType.EqualsAny:
                         return currentValue.Value.Equals(expected);
                         return currentValue.Value.Equals(expected);
                     case ProfileConditionType.GreaterThanEqual:
                     case ProfileConditionType.GreaterThanEqual:
                         return currentValue.Value >= expected;
                         return currentValue.Value >= expected;
@@ -212,9 +226,24 @@ namespace MediaBrowser.Model.Dlna
                 return !condition.IsRequired;
                 return !condition.IsRequired;
             }
             }
 
 
-            if (double.TryParse(condition.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out var expected))
+            var conditionType = condition.Condition;
+            if (condition.Condition == ProfileConditionType.EqualsAny)
             {
             {
-                switch (condition.Condition)
+                foreach (var singleConditionString in condition.Value.AsSpan().Split('|'))
+                {
+                    if (double.TryParse(singleConditionString, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out double conditionValue)
+                        && conditionValue.Equals(currentValue))
+                    {
+                        return true;
+                    }
+                }
+
+                return false;
+            }
+
+            if (double.TryParse(condition.Value, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out var expected))
+            {
+                switch (conditionType)
                 {
                 {
                     case ProfileConditionType.Equals:
                     case ProfileConditionType.Equals:
                         return currentValue.Value.Equals(expected);
                         return currentValue.Value.Equals(expected);