From a7c009e2eb3e21b7b5c07984866419bb8136423f Mon Sep 17 00:00:00 2001
From: Joe Rogers <1337joe@gmail.com>
Date: Sat, 18 Dec 2021 21:40:27 +0100
Subject: [PATCH] Pass TypeOptions instead of full LibraryOptions
---
.../BaseItemManager/BaseItemManager.cs | 14 ++++----
.../BaseItemManager/IBaseItemManager.cs | 8 ++---
.../Manager/ProviderManager.cs | 12 +++----
.../BaseItemManagerTests.cs | 32 +++++++------------
.../Manager/ProviderManagerTests.cs | 6 ++--
5 files changed, 31 insertions(+), 41 deletions(-)
diff --git a/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs b/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
index d273b54fc6..61539cae56 100644
--- a/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
+++ b/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
@@ -35,7 +35,7 @@ namespace MediaBrowser.Controller.BaseItemManager
public SemaphoreSlim MetadataRefreshThrottler { get; private set; }
///
- public bool IsMetadataFetcherEnabled(BaseItem baseItem, LibraryOptions libraryOptions, string name)
+ public bool IsMetadataFetcherEnabled(BaseItem baseItem, TypeOptions? libraryTypeOptions, string name)
{
if (baseItem is Channel)
{
@@ -49,10 +49,9 @@ namespace MediaBrowser.Controller.BaseItemManager
return !baseItem.EnableMediaSourceDisplay;
}
- var typeOptions = libraryOptions.GetTypeOptions(baseItem.GetType().Name);
- if (typeOptions != null)
+ if (libraryTypeOptions != null)
{
- return typeOptions.MetadataFetchers.Contains(name.AsSpan(), StringComparison.OrdinalIgnoreCase);
+ return libraryTypeOptions.MetadataFetchers.Contains(name.AsSpan(), StringComparison.OrdinalIgnoreCase);
}
var itemConfig = _serverConfigurationManager.Configuration.MetadataOptions.FirstOrDefault(i => string.Equals(i.ItemType, baseItem.GetType().Name, StringComparison.OrdinalIgnoreCase));
@@ -61,7 +60,7 @@ namespace MediaBrowser.Controller.BaseItemManager
}
///
- public bool IsImageFetcherEnabled(BaseItem baseItem, LibraryOptions libraryOptions, string name)
+ public bool IsImageFetcherEnabled(BaseItem baseItem, TypeOptions? libraryTypeOptions, string name)
{
if (baseItem is Channel)
{
@@ -75,10 +74,9 @@ namespace MediaBrowser.Controller.BaseItemManager
return !baseItem.EnableMediaSourceDisplay;
}
- var typeOptions = libraryOptions.GetTypeOptions(baseItem.GetType().Name);
- if (typeOptions != null)
+ if (libraryTypeOptions != null)
{
- return typeOptions.ImageFetchers.Contains(name.AsSpan(), StringComparison.OrdinalIgnoreCase);
+ return libraryTypeOptions.ImageFetchers.Contains(name.AsSpan(), StringComparison.OrdinalIgnoreCase);
}
var itemConfig = _serverConfigurationManager.Configuration.MetadataOptions.FirstOrDefault(i => string.Equals(i.ItemType, baseItem.GetType().Name, StringComparison.OrdinalIgnoreCase));
diff --git a/MediaBrowser.Controller/BaseItemManager/IBaseItemManager.cs b/MediaBrowser.Controller/BaseItemManager/IBaseItemManager.cs
index e18994214e..b07c80879d 100644
--- a/MediaBrowser.Controller/BaseItemManager/IBaseItemManager.cs
+++ b/MediaBrowser.Controller/BaseItemManager/IBaseItemManager.cs
@@ -18,18 +18,18 @@ namespace MediaBrowser.Controller.BaseItemManager
/// Is metadata fetcher enabled.
///
/// The base item.
- /// The library options.
+ /// The type options for baseItem from the library (if defined).
/// The metadata fetcher name.
/// true if metadata fetcher is enabled, else false.
- bool IsMetadataFetcherEnabled(BaseItem baseItem, LibraryOptions libraryOptions, string name);
+ bool IsMetadataFetcherEnabled(BaseItem baseItem, TypeOptions? libraryTypeOptions, string name);
///
/// Is image fetcher enabled.
///
/// The base item.
- /// The library options.
+ /// The type options for baseItem from the library (if defined).
/// The image fetcher name.
/// true if image fetcher is enabled, else false.
- bool IsImageFetcherEnabled(BaseItem baseItem, LibraryOptions libraryOptions, string name);
+ bool IsImageFetcherEnabled(BaseItem baseItem, TypeOptions? libraryTypeOptions, string name);
}
}
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index 82d633e234..d1a5831f98 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -321,7 +321,7 @@ namespace MediaBrowser.Providers.Manager
var typeOptions = libraryOptions.GetTypeOptions(item.GetType().Name);
var fetcherOrder = typeOptions?.ImageFetcherOrder ?? options.ImageFetcherOrder;
- return _imageProviders.Where(i => CanRefreshImages(i, item, libraryOptions, refreshOptions, includeDisabled))
+ return _imageProviders.Where(i => CanRefreshImages(i, item, typeOptions, refreshOptions, includeDisabled))
.OrderBy(i => GetConfiguredOrder(fetcherOrder, i.Name))
.ThenBy(GetDefaultOrder);
}
@@ -343,7 +343,7 @@ namespace MediaBrowser.Providers.Manager
var metadataFetcherOrder = typeOptions?.MetadataFetcherOrder ?? globalMetadataOptions.MetadataFetcherOrder;
return _metadataProviders.OfType>()
- .Where(i => CanRefreshMetadata(i, item, libraryOptions, includeDisabled, forceEnableInternetMetadata))
+ .Where(i => CanRefreshMetadata(i, item, typeOptions, includeDisabled, forceEnableInternetMetadata))
.OrderBy(i =>
{
// local and remote providers will be interleaved in the final order
@@ -361,7 +361,7 @@ namespace MediaBrowser.Providers.Manager
private bool CanRefreshMetadata(
IMetadataProvider provider,
BaseItem item,
- LibraryOptions libraryOptions,
+ TypeOptions? libraryTypeOptions,
bool includeDisabled,
bool forceEnableInternetMetadata)
{
@@ -375,7 +375,7 @@ namespace MediaBrowser.Providers.Manager
if (provider is IRemoteMetadataProvider)
{
- if (!forceEnableInternetMetadata && !_baseItemManager.IsMetadataFetcherEnabled(item, libraryOptions, provider.Name))
+ if (!forceEnableInternetMetadata && !_baseItemManager.IsMetadataFetcherEnabled(item, libraryTypeOptions, provider.Name))
{
return false;
}
@@ -402,7 +402,7 @@ namespace MediaBrowser.Providers.Manager
private bool CanRefreshImages(
IImageProvider provider,
BaseItem item,
- LibraryOptions libraryOptions,
+ TypeOptions? libraryTypeOptions,
ImageRefreshOptions refreshOptions,
bool includeDisabled)
{
@@ -419,7 +419,7 @@ namespace MediaBrowser.Providers.Manager
if (provider is IRemoteImageProvider || provider is IDynamicImageProvider)
{
- if (!_baseItemManager.IsImageFetcherEnabled(item, libraryOptions, provider.Name))
+ if (!_baseItemManager.IsImageFetcherEnabled(item, libraryTypeOptions, provider.Name))
{
return false;
}
diff --git a/tests/Jellyfin.Controller.Tests/BaseItemManagerTests.cs b/tests/Jellyfin.Controller.Tests/BaseItemManagerTests.cs
index 463e17ad36..f67e6d1ef0 100644
--- a/tests/Jellyfin.Controller.Tests/BaseItemManagerTests.cs
+++ b/tests/Jellyfin.Controller.Tests/BaseItemManagerTests.cs
@@ -20,17 +20,13 @@ namespace Jellyfin.Controller.Tests
{
BaseItem item = (BaseItem)Activator.CreateInstance(itemType)!;
- var libraryOptions = new LibraryOptions
- {
- TypeOptions = new[]
+ var libraryTypeOptions = itemType == typeof(Book)
+ ? new TypeOptions
{
- new TypeOptions
- {
- Type = "Book",
- MetadataFetchers = new[] { "LibraryEnabled" }
- }
+ Type = "Book",
+ MetadataFetchers = new[] { "LibraryEnabled" }
}
- };
+ : null;
var serverConfiguration = new ServerConfiguration();
foreach (var typeConfig in serverConfiguration.MetadataOptions)
@@ -43,7 +39,7 @@ namespace Jellyfin.Controller.Tests
.Returns(serverConfiguration);
var baseItemManager = new BaseItemManager(serverConfigurationManager.Object);
- var actual = baseItemManager.IsMetadataFetcherEnabled(item, libraryOptions, fetcherName);
+ var actual = baseItemManager.IsMetadataFetcherEnabled(item, libraryTypeOptions, fetcherName);
Assert.Equal(expected, actual);
}
@@ -57,17 +53,13 @@ namespace Jellyfin.Controller.Tests
{
BaseItem item = (BaseItem)Activator.CreateInstance(itemType)!;
- var libraryOptions = new LibraryOptions
- {
- TypeOptions = new[]
+ var libraryTypeOptions = itemType == typeof(Book)
+ ? new TypeOptions
{
- new TypeOptions
- {
- Type = "Book",
- ImageFetchers = new[] { "LibraryEnabled" }
- }
+ Type = "Book",
+ ImageFetchers = new[] { "LibraryEnabled" }
}
- };
+ : null;
var serverConfiguration = new ServerConfiguration();
foreach (var typeConfig in serverConfiguration.MetadataOptions)
@@ -80,7 +72,7 @@ namespace Jellyfin.Controller.Tests
.Returns(serverConfiguration);
var baseItemManager = new BaseItemManager(serverConfigurationManager.Object);
- var actual = baseItemManager.IsImageFetcherEnabled(item, libraryOptions, fetcherName);
+ var actual = baseItemManager.IsImageFetcherEnabled(item, libraryTypeOptions, fetcherName);
Assert.Equal(expected, actual);
}
diff --git a/tests/Jellyfin.Providers.Tests/Manager/ProviderManagerTests.cs b/tests/Jellyfin.Providers.Tests/Manager/ProviderManagerTests.cs
index ba91f5ed2d..560b50f091 100644
--- a/tests/Jellyfin.Providers.Tests/Manager/ProviderManagerTests.cs
+++ b/tests/Jellyfin.Providers.Tests/Manager/ProviderManagerTests.cs
@@ -131,7 +131,7 @@ namespace Jellyfin.Providers.Tests.Manager
};
var baseItemManager = new Mock(MockBehavior.Strict);
- baseItemManager.Setup(i => i.IsImageFetcherEnabled(item, It.IsAny(), providerName))
+ baseItemManager.Setup(i => i.IsImageFetcherEnabled(item, It.IsAny(), providerName))
.Returns(baseItemEnabled);
using var providerManager = GetProviderManager(baseItemManager: baseItemManager.Object);
@@ -219,7 +219,7 @@ namespace Jellyfin.Providers.Tests.Manager
metadataFetcherOrder: serverRemoteOrder?.Select(nameProvider).ToArray());
var baseItemManager = new Mock(MockBehavior.Strict);
- baseItemManager.Setup(i => i.IsMetadataFetcherEnabled(item, It.IsAny(), It.IsAny()))
+ baseItemManager.Setup(i => i.IsMetadataFetcherEnabled(item, It.IsAny(), It.IsAny()))
.Returns(true);
using var providerManager = GetProviderManager(serverConfiguration: serverConfiguration, baseItemManager: baseItemManager.Object);
@@ -302,7 +302,7 @@ namespace Jellyfin.Providers.Tests.Manager
var provider = MockIMetadataProviderMapper(providerType.Name, providerName, forced: providerForced);
var baseItemManager = new Mock(MockBehavior.Strict);
- baseItemManager.Setup(i => i.IsMetadataFetcherEnabled(item, It.IsAny(), providerName))
+ baseItemManager.Setup(i => i.IsMetadataFetcherEnabled(item, It.IsAny(), providerName))
.Returns(baseItemEnabled);
using var providerManager = GetProviderManager(baseItemManager: baseItemManager.Object);