From 318e0d4a2449baff806afb4ee22dc0f4021ca180 Mon Sep 17 00:00:00 2001 From: Claus Vium Date: Tue, 5 Mar 2019 10:27:25 +0100 Subject: [PATCH] Add GetValueOrDefault dictionary extension --- Emby.Dlna/PlayTo/PlayToController.cs | 22 +++++++++---------- .../Extensions/CollectionExtensions.cs | 14 ++++++++++++ 2 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 MediaBrowser.Common/Extensions/CollectionExtensions.cs diff --git a/Emby.Dlna/PlayTo/PlayToController.cs b/Emby.Dlna/PlayTo/PlayToController.cs index 2da8bb8609..8d7d59249a 100644 --- a/Emby.Dlna/PlayTo/PlayToController.cs +++ b/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 values = QueryHelpers.ParseQuery(query); + Dictionary 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 values, string name) + private static int? GetIntValue(IReadOnlyDictionary 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 values, string name) + private static long GetLongValue(IReadOnlyDictionary values, string name) { - var value = values[name].ToString(); + var value = values.GetValueOrDefault(name); if (long.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result)) { diff --git a/MediaBrowser.Common/Extensions/CollectionExtensions.cs b/MediaBrowser.Common/Extensions/CollectionExtensions.cs new file mode 100644 index 0000000000..f7c0e3cf04 --- /dev/null +++ b/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 (this IReadOnlyDictionary dictionary, TKey key) + { + dictionary.TryGetValue(key, out var ret); + return ret; + } + } +}