Ver código fonte

Add GetValueOrDefault dictionary extension

Claus Vium 6 anos atrás
pai
commit
318e0d4a24

+ 11 - 11
Emby.Dlna/PlayTo/PlayToController.cs

@@ -6,6 +6,7 @@ using System.Threading;
 using System.Threading.Tasks;
 using Emby.Dlna.Didl;
 using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Extensions;
 using MediaBrowser.Controller.Dlna;
 using MediaBrowser.Controller.Drawing;
 using MediaBrowser.Controller.Entities;
@@ -17,7 +18,6 @@ using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Events;
 using MediaBrowser.Model.Globalization;
-using MediaBrowser.Model.Services;
 using MediaBrowser.Model.Session;
 using Microsoft.AspNetCore.WebUtilities;
 using Microsoft.Extensions.Logging;
@@ -849,13 +849,13 @@ namespace Emby.Dlna.PlayTo
                 if (index == -1) return request;
 
                 var query = url.Substring(index + 1);
-                Dictionary<string, StringValues> values = QueryHelpers.ParseQuery(query);
+                Dictionary<string, string> values = QueryHelpers.ParseQuery(query).ToDictionary(kv => kv.Key, kv => kv.Value.ToString());
 
-                request.DeviceProfileId = values["DeviceProfileId"].ToString();
-                request.DeviceId = values["DeviceId"].ToString();
-                request.MediaSourceId = values["MediaSourceId"].ToString();
-                request.LiveStreamId = values["LiveStreamId"].ToString();
-                request.IsDirectStream = string.Equals("true", values["Static"].ToString(), StringComparison.OrdinalIgnoreCase);
+                request.DeviceProfileId = values.GetValueOrDefault("DeviceProfileId");
+                request.DeviceId = values.GetValueOrDefault("DeviceId");
+                request.MediaSourceId = values.GetValueOrDefault("MediaSourceId");
+                request.LiveStreamId = values.GetValueOrDefault("LiveStreamId");
+                request.IsDirectStream = string.Equals("true", values.GetValueOrDefault("Static"), StringComparison.OrdinalIgnoreCase);
 
                 request.AudioStreamIndex = GetIntValue(values, "AudioStreamIndex");
                 request.SubtitleStreamIndex = GetIntValue(values, "SubtitleStreamIndex");
@@ -869,9 +869,9 @@ namespace Emby.Dlna.PlayTo
             }
         }
 
-        private static int? GetIntValue(IReadOnlyDictionary<string, StringValues> values, string name)
+        private static int? GetIntValue(IReadOnlyDictionary<string, string> values, string name)
         {
-            var value = values[name].ToString();
+            var value = values.GetValueOrDefault(name);
 
             if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
             {
@@ -881,9 +881,9 @@ namespace Emby.Dlna.PlayTo
             return null;
         }
 
-        private static long GetLongValue(IReadOnlyDictionary<string, StringValues> values, string name)
+        private static long GetLongValue(IReadOnlyDictionary<string, string> values, string name)
         {
-            var value = values[name].ToString();
+            var value = values.GetValueOrDefault(name);
 
             if (long.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
             {

+ 14 - 0
MediaBrowser.Common/Extensions/CollectionExtensions.cs

@@ -0,0 +1,14 @@
+using System.Collections.Generic;
+
+namespace MediaBrowser.Common.Extensions
+{
+    // The MS CollectionExtensions are only available in netcoreapp
+    public static class CollectionExtensions
+    {
+        public static TValue GetValueOrDefault<TKey, TValue> (this IReadOnlyDictionary<TKey, TValue> dictionary, TKey key)
+        {
+            dictionary.TryGetValue(key, out var ret);
+            return ret;
+        }
+    }
+}