diff options
| author | Cody Robibero <cody@robibe.ro> | 2022-04-27 18:16:31 -0600 |
|---|---|---|
| committer | crobibero <cody@robibe.ro> | 2022-04-28 09:26:45 -0400 |
| commit | 13df026f6b8d288acc0201d1076ed0c401c61043 (patch) | |
| tree | b16d375a1084404c2bb1e438bffc061adcd3d20f | |
| parent | d16e36d5a3a0fbf57eb4ccd2b7ac53c084b11526 (diff) | |
Merge pull request #7654 from Shadowghost/nfo-provider-fix
Prefer MetadataProvider enum as provider id key over arbitrary strings
(cherry picked from commit a2abae3014578e8d9c7f1b54140fe3dcf1503ad2)
Signed-off-by: crobibero <cody@robibe.ro>
| -rw-r--r-- | MediaBrowser.Model/Entities/ProviderIdsExtensions.cs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs b/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs index ce4b0ec92..62a2f3ce8 100644 --- a/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs +++ b/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using System.Linq; namespace MediaBrowser.Model.Entities { @@ -10,6 +11,16 @@ namespace MediaBrowser.Model.Entities public static class ProviderIdsExtensions { /// <summary> + /// Case insensitive dictionary of <see cref="MetadataProvider"/> string representation. + /// </summary> + private static readonly Dictionary<string, string> _metadataProviderEnumDictionary = + Enum.GetValues<MetadataProvider>() + .ToDictionary( + enumValue => enumValue.ToString(), + enumValue => enumValue.ToString(), + StringComparer.OrdinalIgnoreCase); + + /// <summary> /// Checks if this instance has an id for the given provider. /// </summary> /// <param name="instance">The instance.</param> @@ -108,7 +119,7 @@ namespace MediaBrowser.Model.Entities /// <param name="instance">The instance.</param> /// <param name="name">The name.</param> /// <param name="value">The value.</param> - public static void SetProviderId(this IHasProviderIds instance, string name, string value) + public static void SetProviderId(this IHasProviderIds instance, string name, string? value) { if (instance == null) { @@ -125,7 +136,15 @@ namespace MediaBrowser.Model.Entities // Ensure it exists instance.ProviderIds ??= new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); - instance.ProviderIds[name] = value; + // Match on internal MetadataProvider enum string values before adding arbitrary providers + if (_metadataProviderEnumDictionary.TryGetValue(name, out var enumValue)) + { + instance.ProviderIds[enumValue] = value; + } + else + { + instance.ProviderIds[name] = value; + } } } |
