aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-08-22 08:50:14 +0200
committerShadowghost <Ghost_of_Stone@web.de>2026-08-22 08:50:14 +0200
commit42c70fba63d72a4113a7b8f2e06293e512cc6914 (patch)
treea0a8ef9fac67796919460208ce231a55b0ea0dd2 /MediaBrowser.Model
parentbd085665d687b55298fde7b9ef6d7124a5f94701 (diff)
Additional fixes
Co-Authored-By: Cody Robibero <cody@robibe.ro>
Diffstat (limited to 'MediaBrowser.Model')
-rw-r--r--MediaBrowser.Model/Entities/ProviderIdsExtensions.cs38
1 files changed, 27 insertions, 11 deletions
diff --git a/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs b/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
index 27d7a4654b..09eba92d9e 100644
--- a/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
+++ b/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
@@ -159,8 +159,15 @@ public static partial class ProviderIdsExtensions
// When name contains a '=' it can't be deserialized from the database
if (string.IsNullOrWhiteSpace(name)
|| string.IsNullOrWhiteSpace(value)
- || name.Contains('=', StringComparison.Ordinal)
- || !IsValidProviderId(name, value))
+ || name.Contains('=', StringComparison.Ordinal))
+ {
+ return false;
+ }
+
+ name = name.Trim();
+ value = value.Trim();
+
+ if (!IsValidProviderId(name, value))
{
return false;
}
@@ -197,7 +204,6 @@ public static partial class ProviderIdsExtensions
/// <param name="instance">The instance.</param>
/// <param name="name">The name, this should not contain a '=' character.</param>
/// <param name="value">The value.</param>
- /// <remarks>Due to how deserialization from the database works the name cannot contain '='.</remarks>
public static void SetProviderId(this IHasProviderIds instance, string name, string value)
{
ArgumentNullException.ThrowIfNull(instance);
@@ -210,17 +216,27 @@ public static partial class ProviderIdsExtensions
throw new ArgumentException("Provider id name cannot contain '='", nameof(name));
}
- // Ensure it exists
- instance.ProviderIds ??= new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ instance.TrySetProviderId(name, value);
+ }
- // Match on internal MetadataProvider enum string values before adding arbitrary providers
- if (_metadataProviderEnumDictionary.TryGetValue(name, out var enumValue))
+ /// <summary>
+ /// Replaces all provider ids, dropping the ones that cannot belong to the provider they are filed under.
+ /// </summary>
+ /// <param name="instance">The instance.</param>
+ /// <param name="providerIds">The provider ids to set.</param>
+ public static void SetProviderIds(this IHasProviderIds instance, IReadOnlyDictionary<string, string>? providerIds)
+ {
+ ArgumentNullException.ThrowIfNull(instance);
+
+ instance.ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ if (providerIds is null)
{
- instance.ProviderIds[enumValue] = value;
+ return;
}
- else
+
+ foreach (var (name, value) in providerIds)
{
- instance.ProviderIds[name] = value;
+ instance.TrySetProviderId(name, value);
}
}
@@ -259,7 +275,7 @@ public static partial class ProviderIdsExtensions
}
private static bool IsPositiveNumber(string value)
- => long.TryParse(value, NumberStyles.None, CultureInfo.InvariantCulture, out var id) && id > 0;
+ => int.TryParse(value, NumberStyles.None, CultureInfo.InvariantCulture, out var id) && id > 0;
private static bool IsGuid(string value)
=> Guid.TryParse(value, CultureInfo.InvariantCulture, out _);