diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index 44056dc9e5..8a3398e01a 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -265,12 +265,6 @@ namespace Emby.Server.Implementations
/// The directory watchers.
private ILibraryMonitor LibraryMonitor { get; set; }
- ///
- /// Gets or sets the provider manager.
- ///
- /// The provider manager.
- private IProviderManager ProviderManager { get; set; }
-
public IImageProcessor ImageProcessor { get; set; }
///
@@ -726,7 +720,7 @@ namespace Emby.Server.Implementations
StartupOptions.FFmpegPath);
serviceCollection.AddSingleton(MediaEncoder);
- LibraryManager = new LibraryManager(this, LoggerFactory, TaskManager, UserManager, ServerConfigurationManager, UserDataManager, () => LibraryMonitor, FileSystemManager, () => ProviderManager, Resolve, MediaEncoder);
+ LibraryManager = new LibraryManager(this, LoggerFactory, TaskManager, UserManager, ServerConfigurationManager, UserDataManager, () => LibraryMonitor, FileSystemManager, Resolve, Resolve, MediaEncoder);
serviceCollection.AddSingleton(LibraryManager);
var musicManager = new MusicManager(LibraryManager);
@@ -759,8 +753,7 @@ namespace Emby.Server.Implementations
SubtitleManager = new SubtitleManager(LoggerFactory, FileSystemManager, LibraryMonitor, MediaSourceManager, LocalizationManager);
serviceCollection.AddSingleton(SubtitleManager);
- ProviderManager = new ProviderManager(HttpClient, SubtitleManager, ServerConfigurationManager, LibraryMonitor, LoggerFactory, FileSystemManager, ApplicationPaths, () => LibraryManager, JsonSerializer);
- serviceCollection.AddSingleton(ProviderManager);
+ serviceCollection.AddSingleton();
// TODO: Refactor to eliminate circular dependency here so Lazy<> isn't required
serviceCollection.AddTransient(provider => new Lazy(provider.GetRequiredService));
@@ -931,7 +924,7 @@ namespace Emby.Server.Implementations
BaseItem.Logger = LoggerFactory.CreateLogger("BaseItem");
BaseItem.ConfigurationManager = ServerConfigurationManager;
BaseItem.LibraryManager = LibraryManager;
- BaseItem.ProviderManager = ProviderManager;
+ BaseItem.ProviderManager = Resolve();
BaseItem.LocalizationManager = LocalizationManager;
BaseItem.ItemRepository = ItemRepository;
User.UserManager = UserManager;
@@ -1013,7 +1006,7 @@ namespace Emby.Server.Implementations
GetExports(),
GetExports());
- ProviderManager.AddParts(
+ Resolve().AddParts(
GetExports(),
GetExports(),
GetExports(),
diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs
index 001cfe5dbb..c8ea861ce4 100644
--- a/Emby.Server.Implementations/Dto/DtoService.cs
+++ b/Emby.Server.Implementations/Dto/DtoService.cs
@@ -39,9 +39,9 @@ namespace Emby.Server.Implementations.Dto
private readonly IApplicationHost _appHost;
private readonly IMediaSourceManager _mediaSourceManager;
- private readonly Lazy _livetvManagerLazy;
+ private readonly Lazy _livetvManagerFactory;
- private ILiveTvManager LivetvManager => _livetvManagerLazy.Value;
+ private ILiveTvManager LivetvManager => _livetvManagerFactory.Value;
public DtoService(
ILogger logger,
@@ -52,7 +52,7 @@ namespace Emby.Server.Implementations.Dto
IProviderManager providerManager,
IApplicationHost appHost,
IMediaSourceManager mediaSourceManager,
- Lazy livetvManager)
+ Lazy livetvManagerFactory)
{
_logger = logger;
_libraryManager = libraryManager;
@@ -62,7 +62,7 @@ namespace Emby.Server.Implementations.Dto
_providerManager = providerManager;
_appHost = appHost;
_mediaSourceManager = mediaSourceManager;
- _livetvManagerLazy = livetvManager;
+ _livetvManagerFactory = livetvManagerFactory;
}
///
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index 7125f34c55..337bc37eb9 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -36,60 +36,51 @@ namespace MediaBrowser.Providers.Manager
///
public class ProviderManager : IProviderManager, IDisposable
{
- ///
- /// The _logger
- ///
private readonly ILogger _logger;
-
- ///
- /// The _HTTP client
- ///
private readonly IHttpClient _httpClient;
-
- ///
- /// The _directory watchers
- ///
private readonly ILibraryMonitor _libraryMonitor;
-
- ///
- /// Gets or sets the configuration manager.
- ///
- /// The configuration manager.
- private IServerConfigurationManager ConfigurationManager { get; set; }
+ private readonly IFileSystem _fileSystem;
+ private readonly IServerApplicationPaths _appPaths;
+ private readonly IJsonSerializer _json;
+ private readonly ILibraryManager _libraryManager;
+ private readonly ISubtitleManager _subtitleManager;
+ private readonly IServerConfigurationManager _configurationManager;
private IImageProvider[] ImageProviders { get; set; }
- private readonly IFileSystem _fileSystem;
-
private IMetadataService[] _metadataServices = { };
private IMetadataProvider[] _metadataProviders = { };
private IEnumerable _savers;
- private readonly IServerApplicationPaths _appPaths;
- private readonly IJsonSerializer _json;
private IExternalId[] _externalIds;
- private readonly Func _libraryManagerFactory;
private CancellationTokenSource _disposeCancellationTokenSource = new CancellationTokenSource();
public event EventHandler> RefreshStarted;
public event EventHandler> RefreshCompleted;
public event EventHandler>> RefreshProgress;
- private ISubtitleManager _subtitleManager;
-
///
/// Initializes a new instance of the class.
///
- public ProviderManager(IHttpClient httpClient, ISubtitleManager subtitleManager, IServerConfigurationManager configurationManager, ILibraryMonitor libraryMonitor, ILoggerFactory loggerFactory, IFileSystem fileSystem, IServerApplicationPaths appPaths, Func libraryManagerFactory, IJsonSerializer json)
+ public ProviderManager(
+ IHttpClient httpClient,
+ ISubtitleManager subtitleManager,
+ IServerConfigurationManager configurationManager,
+ ILibraryMonitor libraryMonitor,
+ ILogger logger,
+ IFileSystem fileSystem,
+ IServerApplicationPaths appPaths,
+ ILibraryManager libraryManager,
+ IJsonSerializer json)
{
- _logger = loggerFactory.CreateLogger("ProviderManager");
+ _logger = logger;
_httpClient = httpClient;
- ConfigurationManager = configurationManager;
+ _configurationManager = configurationManager;
_libraryMonitor = libraryMonitor;
_fileSystem = fileSystem;
_appPaths = appPaths;
- _libraryManagerFactory = libraryManagerFactory;
+ _libraryManager = libraryManager;
_json = json;
_subtitleManager = subtitleManager;
}
@@ -176,7 +167,7 @@ namespace MediaBrowser.Providers.Manager
public Task SaveImage(BaseItem item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken)
{
- return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, source, mimeType, type, imageIndex, cancellationToken);
+ return new ImageSaver(_configurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, source, mimeType, type, imageIndex, cancellationToken);
}
public Task SaveImage(BaseItem item, string source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken)
@@ -188,7 +179,7 @@ namespace MediaBrowser.Providers.Manager
var fileStream = new FileStream(source, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, IODefaults.FileStreamBufferSize, true);
- return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, saveLocallyWithMedia, cancellationToken);
+ return new ImageSaver(_configurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, saveLocallyWithMedia, cancellationToken);
}
public async Task> GetAvailableRemoteImages(BaseItem item, RemoteImageQuery query, CancellationToken cancellationToken)
@@ -273,7 +264,7 @@ namespace MediaBrowser.Providers.Manager
public IEnumerable GetImageProviders(BaseItem item, ImageRefreshOptions refreshOptions)
{
- return GetImageProviders(item, _libraryManagerFactory().GetLibraryOptions(item), GetMetadataOptions(item), refreshOptions, false);
+ return GetImageProviders(item, _libraryManager.GetLibraryOptions(item), GetMetadataOptions(item), refreshOptions, false);
}
private IEnumerable GetImageProviders(BaseItem item, LibraryOptions libraryOptions, MetadataOptions options, ImageRefreshOptions refreshOptions, bool includeDisabled)
@@ -328,7 +319,7 @@ namespace MediaBrowser.Providers.Manager
private IEnumerable GetRemoteImageProviders(BaseItem item, bool includeDisabled)
{
var options = GetMetadataOptions(item);
- var libraryOptions = _libraryManagerFactory().GetLibraryOptions(item);
+ var libraryOptions = _libraryManager.GetLibraryOptions(item);
return GetImageProviders(item, libraryOptions, options,
new ImageRefreshOptions(
@@ -593,7 +584,7 @@ namespace MediaBrowser.Providers.Manager
{
var type = item.GetType().Name;
- return ConfigurationManager.Configuration.MetadataOptions
+ return _configurationManager.Configuration.MetadataOptions
.FirstOrDefault(i => string.Equals(i.ItemType, type, StringComparison.OrdinalIgnoreCase)) ??
new MetadataOptions();
}
@@ -623,7 +614,7 @@ namespace MediaBrowser.Providers.Manager
/// Task.
private void SaveMetadata(BaseItem item, ItemUpdateType updateType, IEnumerable savers)
{
- var libraryOptions = _libraryManagerFactory().GetLibraryOptions(item);
+ var libraryOptions = _libraryManager.GetLibraryOptions(item);
foreach (var saver in savers.Where(i => IsSaverEnabledForItem(i, item, libraryOptions, updateType, false)))
{
@@ -743,7 +734,7 @@ namespace MediaBrowser.Providers.Manager
if (!searchInfo.ItemId.Equals(Guid.Empty))
{
- referenceItem = _libraryManagerFactory().GetItemById(searchInfo.ItemId);
+ referenceItem = _libraryManager.GetItemById(searchInfo.ItemId);
}
return GetRemoteSearchResults(searchInfo, referenceItem, cancellationToken);
@@ -771,7 +762,7 @@ namespace MediaBrowser.Providers.Manager
}
else
{
- libraryOptions = _libraryManagerFactory().GetLibraryOptions(referenceItem);
+ libraryOptions = _libraryManager.GetLibraryOptions(referenceItem);
}
var options = GetMetadataOptions(referenceItem);
@@ -786,11 +777,11 @@ namespace MediaBrowser.Providers.Manager
if (string.IsNullOrWhiteSpace(searchInfo.SearchInfo.MetadataLanguage))
{
- searchInfo.SearchInfo.MetadataLanguage = ConfigurationManager.Configuration.PreferredMetadataLanguage;
+ searchInfo.SearchInfo.MetadataLanguage = _configurationManager.Configuration.PreferredMetadataLanguage;
}
if (string.IsNullOrWhiteSpace(searchInfo.SearchInfo.MetadataCountryCode))
{
- searchInfo.SearchInfo.MetadataCountryCode = ConfigurationManager.Configuration.MetadataCountryCode;
+ searchInfo.SearchInfo.MetadataCountryCode = _configurationManager.Configuration.MetadataCountryCode;
}
var resultList = new List();
@@ -1010,7 +1001,7 @@ namespace MediaBrowser.Providers.Manager
private async Task StartProcessingRefreshQueue()
{
- var libraryManager = _libraryManagerFactory();
+ var libraryManager = _libraryManager;
if (_disposed)
{
@@ -1088,7 +1079,7 @@ namespace MediaBrowser.Providers.Manager
private async Task RefreshArtist(MusicArtist item, MetadataRefreshOptions options, CancellationToken cancellationToken)
{
- var albums = _libraryManagerFactory()
+ var albums = _libraryManager
.GetItemList(new InternalItemsQuery
{
IncludeItemTypes = new[] { nameof(MusicAlbum) },