aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaus Vium <cvium@users.noreply.github.com>2021-03-03 17:24:58 +0100
committerGitHub <noreply@github.com>2021-03-03 17:24:58 +0100
commitddc62a89bab6b5a1ecdee7a9ebc7f9d5887d8be8 (patch)
tree72574b2350b3ea090d3df9550f229506e1dce191
parentd819a1d92827f6a8c8b3b5289a4ca306a9f098ed (diff)
parent8b72b902f53b32c0c0d69eeda3bd32f992ac53ee (diff)
Merge pull request #5356 from cvium/fix_provideridextensions
return false when providerid is null or empty
-rw-r--r--MediaBrowser.Model/Entities/ProviderIdsExtensions.cs12
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs8
-rw-r--r--tests/Jellyfin.Model.Tests/Entities/ProviderIdsExtensionsTests.cs29
3 files changed, 38 insertions, 11 deletions
diff --git a/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs b/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
index bde5a1da1..09d14dc6a 100644
--- a/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
+++ b/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs
@@ -22,7 +22,7 @@ namespace MediaBrowser.Model.Entities
throw new ArgumentNullException(nameof(instance));
}
- return instance.ProviderIds?.ContainsKey(name) ?? false;
+ return instance.TryGetProviderId(name, out _);
}
/// <summary>
@@ -56,7 +56,15 @@ namespace MediaBrowser.Model.Entities
return false;
}
- return instance.ProviderIds.TryGetValue(name, out id);
+ 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;
}
/// <summary>
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index 913f14d9b..bc16a8abb 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -869,14 +869,14 @@ namespace MediaBrowser.Providers.Manager
}
}
}
- catch (Exception)
+#pragma warning disable CA1031 // do not catch general exception types
+ catch (Exception ex)
+#pragma warning restore CA1031 // do not catch general exception types
{
- // Logged at lower levels
+ _logger.LogError(ex, "Provider {ProviderName} failed to retrieve search results", provider.Name);
}
}
- // _logger.LogDebug("Returning search results {0}", _json.SerializeToString(resultList));
-
return resultList;
}
diff --git a/tests/Jellyfin.Model.Tests/Entities/ProviderIdsExtensionsTests.cs b/tests/Jellyfin.Model.Tests/Entities/ProviderIdsExtensionsTests.cs
index 2b2414ef1..a1ace8476 100644
--- a/tests/Jellyfin.Model.Tests/Entities/ProviderIdsExtensionsTests.cs
+++ b/tests/Jellyfin.Model.Tests/Entities/ProviderIdsExtensionsTests.cs
@@ -18,7 +18,7 @@ namespace Jellyfin.Model.Tests.Entities
[Fact]
public void HasProviderId_NullProvider_False()
{
- var nullProvider = new ProviderIdsExtensionsTestsObject()
+ var nullProvider = new ProviderIdsExtensionsTestsObject
{
ProviderIds = null!
};
@@ -48,6 +48,15 @@ namespace Jellyfin.Model.Tests.Entities
}
[Fact]
+ public void HasProviderId_FoundNameEmptyValue_False()
+ {
+ var provider = new ProviderIdsExtensionsTestsObject();
+ provider.ProviderIds[MetadataProvider.Imdb.ToString()] = string.Empty;
+
+ Assert.False(provider.HasProviderId(MetadataProvider.Imdb));
+ }
+
+ [Fact]
public void GetProviderId_NullInstance_ThrowsArgumentNullException()
{
Assert.Throws<ArgumentNullException>(() => ProviderIdsExtensions.GetProviderId(null!, MetadataProvider.Imdb));
@@ -68,7 +77,7 @@ namespace Jellyfin.Model.Tests.Entities
[Fact]
public void GetProviderId_NullProvider_Null()
{
- var nullProvider = new ProviderIdsExtensionsTestsObject()
+ var nullProvider = new ProviderIdsExtensionsTestsObject
{
ProviderIds = null!
};
@@ -85,7 +94,7 @@ namespace Jellyfin.Model.Tests.Entities
[Fact]
public void TryGetProviderId_NullProvider_False()
{
- var nullProvider = new ProviderIdsExtensionsTestsObject()
+ var nullProvider = new ProviderIdsExtensionsTestsObject
{
ProviderIds = null!
};
@@ -113,6 +122,16 @@ namespace Jellyfin.Model.Tests.Entities
}
[Fact]
+ public void TryGetProviderId_FoundNameEmptyValue_False()
+ {
+ var provider = new ProviderIdsExtensionsTestsObject();
+ provider.ProviderIds[MetadataProvider.Imdb.ToString()] = string.Empty;
+
+ Assert.False(provider.TryGetProviderId(MetadataProvider.Imdb, out var id));
+ Assert.Null(id);
+ }
+
+ [Fact]
public void SetProviderId_NullInstance_ThrowsArgumentNullException()
{
Assert.Throws<ArgumentNullException>(() => ProviderIdsExtensions.SetProviderId(null!, MetadataProvider.Imdb, ExampleImdbId));
@@ -146,7 +165,7 @@ namespace Jellyfin.Model.Tests.Entities
[Fact]
public void SetProviderId_NullProvider_Success()
{
- var nullProvider = new ProviderIdsExtensionsTestsObject()
+ var nullProvider = new ProviderIdsExtensionsTestsObject
{
ProviderIds = null!
};
@@ -158,7 +177,7 @@ namespace Jellyfin.Model.Tests.Entities
[Fact]
public void SetProviderId_NullProviderAndEmptyName_Success()
{
- var nullProvider = new ProviderIdsExtensionsTestsObject()
+ var nullProvider = new ProviderIdsExtensionsTestsObject
{
ProviderIds = null!
};