aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
diff options
context:
space:
mode:
authorBond_009 <bond.009@outlook.com>2024-07-17 15:48:21 +0200
committerBond_009 <bond.009@outlook.com>2024-07-17 15:48:21 +0200
commitecd2dab0a2550c80ae054576d9c05ddb24d5e47b (patch)
tree48d80691cd1287c58722fb1e7aea9e02b4ba410f /MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
parent78ed8f660c1acf216cc0133bc709acf09f7a411e (diff)
Add TrySetProviderId extension
Diffstat (limited to 'MediaBrowser.Model/Entities/ProviderIdsExtensions.cs')
-rw-r--r--MediaBrowser.Model/Entities/ProviderIdsExtensions.cs323
1 files changed, 180 insertions, 143 deletions
diff --git a/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs b/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
index 1c73091f0..479ec7712 100644
--- a/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
+++ b/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
@@ -3,177 +3,214 @@ using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
-namespace MediaBrowser.Model.Entities
+namespace MediaBrowser.Model.Entities;
+
+/// <summary>
+/// Class ProviderIdsExtensions.
+/// </summary>
+public static class ProviderIdsExtensions
{
/// <summary>
- /// Class ProviderIdsExtensions.
+ /// 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>
+ /// <param name="name">The of the provider name.</param>
+ /// <returns><c>true</c> if a provider id with the given name was found; otherwise <c>false</c>.</returns>
+ public static bool HasProviderId(this IHasProviderIds instance, string name)
+ => instance.TryGetProviderId(name, out _);
+
+ /// <summary>
+ /// Checks if this instance has an id for the given provider.
+ /// </summary>
+ /// <param name="instance">The instance.</param>
+ /// <param name="provider">The provider.</param>
+ /// <returns><c>true</c> if a provider id with the given name was found; otherwise <c>false</c>.</returns>
+ public static bool HasProviderId(this IHasProviderIds instance, MetadataProvider provider)
+ => instance.HasProviderId(provider.ToString());
+
+ /// <summary>
+ /// Gets a provider id.
/// </summary>
- public static class ProviderIdsExtensions
+ /// <param name="instance">The instance.</param>
+ /// <param name="name">The name.</param>
+ /// <param name="id">The provider id.</param>
+ /// <returns><c>true</c> if a provider id with the given name was found; otherwise <c>false</c>.</returns>
+ public static bool TryGetProviderId(this IHasProviderIds instance, string name, [NotNullWhen(true)] out string? id)
{
- /// <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>
- /// <param name="name">The of the provider name.</param>
- /// <returns><c>true</c> if a provider id with the given name was found; otherwise <c>false</c>.</returns>
- public static bool HasProviderId(this IHasProviderIds instance, string name)
- {
- ArgumentNullException.ThrowIfNull(instance);
+ ArgumentNullException.ThrowIfNull(instance);
- return instance.TryGetProviderId(name, out _);
+ if (instance.ProviderIds is null)
+ {
+ id = null;
+ return false;
}
- /// <summary>
- /// Checks if this instance has an id for the given provider.
- /// </summary>
- /// <param name="instance">The instance.</param>
- /// <param name="provider">The provider.</param>
- /// <returns><c>true</c> if a provider id with the given name was found; otherwise <c>false</c>.</returns>
- public static bool HasProviderId(this IHasProviderIds instance, MetadataProvider provider)
+ var foundProviderId = instance.ProviderIds.TryGetValue(name, out id);
+ // This occurs when searching with Identify (and possibly in other places)
+ if (string.IsNullOrEmpty(id))
{
- return instance.HasProviderId(provider.ToString());
+ id = null;
+ foundProviderId = false;
}
- /// <summary>
- /// Gets a provider id.
- /// </summary>
- /// <param name="instance">The instance.</param>
- /// <param name="name">The name.</param>
- /// <param name="id">The provider id.</param>
- /// <returns><c>true</c> if a provider id with the given name was found; otherwise <c>false</c>.</returns>
- public static bool TryGetProviderId(this IHasProviderIds instance, string name, [NotNullWhen(true)] out string? id)
+ return foundProviderId;
+ }
+
+ /// <summary>
+ /// Gets a provider id.
+ /// </summary>
+ /// <param name="instance">The instance.</param>
+ /// <param name="provider">The provider.</param>
+ /// <param name="id">The provider id.</param>
+ /// <returns><c>true</c> if a provider id with the given name was found; otherwise <c>false</c>.</returns>
+ public static bool TryGetProviderId(this IHasProviderIds instance, MetadataProvider provider, [NotNullWhen(true)] out string? id)
+ {
+ return instance.TryGetProviderId(provider.ToString(), out id);
+ }
+
+ /// <summary>
+ /// Gets a provider id.
+ /// </summary>
+ /// <param name="instance">The instance.</param>
+ /// <param name="name">The name.</param>
+ /// <returns>System.String.</returns>
+ public static string? GetProviderId(this IHasProviderIds instance, string name)
+ {
+ instance.TryGetProviderId(name, out string? id);
+ return id;
+ }
+
+ /// <summary>
+ /// Gets a provider id.
+ /// </summary>
+ /// <param name="instance">The instance.</param>
+ /// <param name="provider">The provider.</param>
+ /// <returns>System.String.</returns>
+ public static string? GetProviderId(this IHasProviderIds instance, MetadataProvider provider)
+ {
+ return instance.GetProviderId(provider.ToString());
+ }
+
+ /// <summary>
+ /// Sets a provider id.
+ /// </summary>
+ /// <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 can not contain '='.</remarks>
+ /// <returns><c>true</c> if the provider id got set successfully; otherwise, <c>false</c>.</returns>
+ public static bool TrySetProviderId(this IHasProviderIds instance, string? name, string? value)
+ {
+ ArgumentNullException.ThrowIfNull(instance);
+
+ // When name contains a '=' it can't be deserialized from the database
+ if (string.IsNullOrWhiteSpace(name)
+ || string.IsNullOrWhiteSpace(value)
+ || name.Contains('=', StringComparison.Ordinal))
{
- ArgumentNullException.ThrowIfNull(instance);
-
- if (instance.ProviderIds is null)
- {
- id = null;
- return false;
- }
-
- var foundProviderId = instance.ProviderIds.TryGetValue(name, out id);
- // This occurs when searching with Identify (and possibly in other places)
- if (string.IsNullOrEmpty(id))
- {
- id = null;
- foundProviderId = false;
- }
-
- return foundProviderId;
+ return false;
}
- /// <summary>
- /// Gets a provider id.
- /// </summary>
- /// <param name="instance">The instance.</param>
- /// <param name="provider">The provider.</param>
- /// <param name="id">The provider id.</param>
- /// <returns><c>true</c> if a provider id with the given name was found; otherwise <c>false</c>.</returns>
- public static bool TryGetProviderId(this IHasProviderIds instance, MetadataProvider provider, [NotNullWhen(true)] out string? id)
+ // Ensure it exists
+ instance.ProviderIds ??= new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+
+ // Match on internal MetadataProvider enum string values before adding arbitrary providers
+ if (_metadataProviderEnumDictionary.TryGetValue(name, out var enumValue))
{
- return instance.TryGetProviderId(provider.ToString(), out id);
+ instance.ProviderIds[enumValue] = value;
}
-
- /// <summary>
- /// Gets a provider id.
- /// </summary>
- /// <param name="instance">The instance.</param>
- /// <param name="name">The name.</param>
- /// <returns>System.String.</returns>
- public static string? GetProviderId(this IHasProviderIds instance, string name)
+ else
{
- instance.TryGetProviderId(name, out string? id);
- return id;
+ instance.ProviderIds[name] = value;
}
- /// <summary>
- /// Gets a provider id.
- /// </summary>
- /// <param name="instance">The instance.</param>
- /// <param name="provider">The provider.</param>
- /// <returns>System.String.</returns>
- public static string? GetProviderId(this IHasProviderIds instance, MetadataProvider provider)
+ return true;
+ }
+
+ /// <summary>
+ /// Sets a provider id.
+ /// </summary>
+ /// <param name="instance">The instance.</param>
+ /// <param name="provider">The provider.</param>
+ /// <param name="value">The value.</param>
+ /// <returns><c>true</c> if the provider id got set successfully; otherwise, <c>false</c>.</returns>
+ public static bool TrySetProviderId(this IHasProviderIds instance, MetadataProvider provider, string? value)
+ => instance.TrySetProviderId(provider.ToString(), value);
+
+ /// <summary>
+ /// Sets a provider id.
+ /// </summary>
+ /// <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 can not contain '='.</remarks>
+ public static void SetProviderId(this IHasProviderIds instance, string name, string value)
+ {
+ ArgumentNullException.ThrowIfNull(instance);
+ ArgumentException.ThrowIfNullOrWhiteSpace(name);
+ ArgumentException.ThrowIfNullOrWhiteSpace(value);
+
+ // When name contains a '=' it can't be deserialized from the database
+ if (name.Contains('=', StringComparison.Ordinal))
{
- return instance.GetProviderId(provider.ToString());
+ throw new ArgumentException("Provider id name cannot contain '='", nameof(name));
}
- /// <summary>
- /// Sets a provider id.
- /// </summary>
- /// <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 can not contain '='.</remarks>
- public static void SetProviderId(this IHasProviderIds instance, string name, string value)
+ // Ensure it exists
+ instance.ProviderIds ??= new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+
+ // Match on internal MetadataProvider enum string values before adding arbitrary providers
+ if (_metadataProviderEnumDictionary.TryGetValue(name, out var enumValue))
{
- ArgumentNullException.ThrowIfNull(instance);
- ArgumentException.ThrowIfNullOrEmpty(name);
- ArgumentException.ThrowIfNullOrEmpty(value);
-
- // When name contains a '=' it can't be deserialized from the database
- if (name.Contains('=', StringComparison.Ordinal))
- {
- throw new ArgumentException("Provider id name cannot contain '='", nameof(name));
- }
-
- // Ensure it exists
- instance.ProviderIds ??= new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
-
- // 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;
- }
+ instance.ProviderIds[enumValue] = value;
}
-
- /// <summary>
- /// Sets a provider id.
- /// </summary>
- /// <param name="instance">The instance.</param>
- /// <param name="provider">The provider.</param>
- /// <param name="value">The value.</param>
- public static void SetProviderId(this IHasProviderIds instance, MetadataProvider provider, string value)
+ else
{
- instance.SetProviderId(provider.ToString(), value);
+ instance.ProviderIds[name] = value;
}
+ }
- /// <summary>
- /// Removes a provider id.
- /// </summary>
- /// <param name="instance">The instance.</param>
- /// <param name="name">The name.</param>
- public static void RemoveProviderId(this IHasProviderIds instance, string name)
- {
- ArgumentNullException.ThrowIfNull(instance);
- ArgumentException.ThrowIfNullOrEmpty(name);
+ /// <summary>
+ /// Sets a provider id.
+ /// </summary>
+ /// <param name="instance">The instance.</param>
+ /// <param name="provider">The provider.</param>
+ /// <param name="value">The value.</param>
+ public static void SetProviderId(this IHasProviderIds instance, MetadataProvider provider, string value)
+ => instance.SetProviderId(provider.ToString(), value);
- instance.ProviderIds?.Remove(name);
- }
+ /// <summary>
+ /// Removes a provider id.
+ /// </summary>
+ /// <param name="instance">The instance.</param>
+ /// <param name="name">The name.</param>
+ public static void RemoveProviderId(this IHasProviderIds instance, string name)
+ {
+ ArgumentNullException.ThrowIfNull(instance);
+ ArgumentException.ThrowIfNullOrEmpty(name);
- /// <summary>
- /// Removes a provider id.
- /// </summary>
- /// <param name="instance">The instance.</param>
- /// <param name="provider">The provider.</param>
- public static void RemoveProviderId(this IHasProviderIds instance, MetadataProvider provider)
- {
- ArgumentNullException.ThrowIfNull(instance);
+ instance.ProviderIds?.Remove(name);
+ }
- instance.ProviderIds?.Remove(provider.ToString());
- }
+ /// <summary>
+ /// Removes a provider id.
+ /// </summary>
+ /// <param name="instance">The instance.</param>
+ /// <param name="provider">The provider.</param>
+ public static void RemoveProviderId(this IHasProviderIds instance, MetadataProvider provider)
+ {
+ ArgumentNullException.ThrowIfNull(instance);
+
+ instance.ProviderIds?.Remove(provider.ToString());
}
}