瀏覽代碼

Register IProviderManager correctly

Mark Monteiro 5 年之前
父節點
當前提交
51b9a6e94b

+ 4 - 11
Emby.Server.Implementations/ApplicationHost.cs

@@ -265,12 +265,6 @@ namespace Emby.Server.Implementations
         /// <value>The directory watchers.</value>
         /// <value>The directory watchers.</value>
         private ILibraryMonitor LibraryMonitor { get; set; }
         private ILibraryMonitor LibraryMonitor { get; set; }
 
 
-        /// <summary>
-        /// Gets or sets the provider manager.
-        /// </summary>
-        /// <value>The provider manager.</value>
-        private IProviderManager ProviderManager { get; set; }
-
         public IImageProcessor ImageProcessor { get; set; }
         public IImageProcessor ImageProcessor { get; set; }
 
 
         /// <summary>
         /// <summary>
@@ -726,7 +720,7 @@ namespace Emby.Server.Implementations
                 StartupOptions.FFmpegPath);
                 StartupOptions.FFmpegPath);
             serviceCollection.AddSingleton(MediaEncoder);
             serviceCollection.AddSingleton(MediaEncoder);
 
 
-            LibraryManager = new LibraryManager(this, LoggerFactory, TaskManager, UserManager, ServerConfigurationManager, UserDataManager, () => LibraryMonitor, FileSystemManager, () => ProviderManager, Resolve<IUserViewManager>, MediaEncoder);
+            LibraryManager = new LibraryManager(this, LoggerFactory, TaskManager, UserManager, ServerConfigurationManager, UserDataManager, () => LibraryMonitor, FileSystemManager, Resolve<IProviderManager>, Resolve<IUserViewManager>, MediaEncoder);
             serviceCollection.AddSingleton(LibraryManager);
             serviceCollection.AddSingleton(LibraryManager);
 
 
             var musicManager = new MusicManager(LibraryManager);
             var musicManager = new MusicManager(LibraryManager);
@@ -759,8 +753,7 @@ namespace Emby.Server.Implementations
             SubtitleManager = new SubtitleManager(LoggerFactory, FileSystemManager, LibraryMonitor, MediaSourceManager, LocalizationManager);
             SubtitleManager = new SubtitleManager(LoggerFactory, FileSystemManager, LibraryMonitor, MediaSourceManager, LocalizationManager);
             serviceCollection.AddSingleton(SubtitleManager);
             serviceCollection.AddSingleton(SubtitleManager);
 
 
-            ProviderManager = new ProviderManager(HttpClient, SubtitleManager, ServerConfigurationManager, LibraryMonitor, LoggerFactory, FileSystemManager, ApplicationPaths, () => LibraryManager, JsonSerializer);
-            serviceCollection.AddSingleton(ProviderManager);
+            serviceCollection.AddSingleton<IProviderManager, ProviderManager>();
 
 
             // TODO: Refactor to eliminate circular dependency here so Lazy<> isn't required
             // TODO: Refactor to eliminate circular dependency here so Lazy<> isn't required
             serviceCollection.AddTransient(provider => new Lazy<ILiveTvManager>(provider.GetRequiredService<ILiveTvManager>));
             serviceCollection.AddTransient(provider => new Lazy<ILiveTvManager>(provider.GetRequiredService<ILiveTvManager>));
@@ -931,7 +924,7 @@ namespace Emby.Server.Implementations
             BaseItem.Logger = LoggerFactory.CreateLogger("BaseItem");
             BaseItem.Logger = LoggerFactory.CreateLogger("BaseItem");
             BaseItem.ConfigurationManager = ServerConfigurationManager;
             BaseItem.ConfigurationManager = ServerConfigurationManager;
             BaseItem.LibraryManager = LibraryManager;
             BaseItem.LibraryManager = LibraryManager;
-            BaseItem.ProviderManager = ProviderManager;
+            BaseItem.ProviderManager = Resolve<IProviderManager>();
             BaseItem.LocalizationManager = LocalizationManager;
             BaseItem.LocalizationManager = LocalizationManager;
             BaseItem.ItemRepository = ItemRepository;
             BaseItem.ItemRepository = ItemRepository;
             User.UserManager = UserManager;
             User.UserManager = UserManager;
@@ -1013,7 +1006,7 @@ namespace Emby.Server.Implementations
                 GetExports<IBaseItemComparer>(),
                 GetExports<IBaseItemComparer>(),
                 GetExports<ILibraryPostScanTask>());
                 GetExports<ILibraryPostScanTask>());
 
 
-            ProviderManager.AddParts(
+            Resolve<IProviderManager>().AddParts(
                 GetExports<IImageProvider>(),
                 GetExports<IImageProvider>(),
                 GetExports<IMetadataService>(),
                 GetExports<IMetadataService>(),
                 GetExports<IMetadataProvider>(),
                 GetExports<IMetadataProvider>(),

+ 4 - 4
Emby.Server.Implementations/Dto/DtoService.cs

@@ -39,9 +39,9 @@ namespace Emby.Server.Implementations.Dto
 
 
         private readonly IApplicationHost _appHost;
         private readonly IApplicationHost _appHost;
         private readonly IMediaSourceManager _mediaSourceManager;
         private readonly IMediaSourceManager _mediaSourceManager;
-        private readonly Lazy<ILiveTvManager> _livetvManagerLazy;
+        private readonly Lazy<ILiveTvManager> _livetvManagerFactory;
 
 
-        private ILiveTvManager LivetvManager => _livetvManagerLazy.Value;
+        private ILiveTvManager LivetvManager => _livetvManagerFactory.Value;
 
 
         public DtoService(
         public DtoService(
             ILogger<DtoService> logger,
             ILogger<DtoService> logger,
@@ -52,7 +52,7 @@ namespace Emby.Server.Implementations.Dto
             IProviderManager providerManager,
             IProviderManager providerManager,
             IApplicationHost appHost,
             IApplicationHost appHost,
             IMediaSourceManager mediaSourceManager,
             IMediaSourceManager mediaSourceManager,
-            Lazy<ILiveTvManager> livetvManager)
+            Lazy<ILiveTvManager> livetvManagerFactory)
         {
         {
             _logger = logger;
             _logger = logger;
             _libraryManager = libraryManager;
             _libraryManager = libraryManager;
@@ -62,7 +62,7 @@ namespace Emby.Server.Implementations.Dto
             _providerManager = providerManager;
             _providerManager = providerManager;
             _appHost = appHost;
             _appHost = appHost;
             _mediaSourceManager = mediaSourceManager;
             _mediaSourceManager = mediaSourceManager;
-            _livetvManagerLazy = livetvManager;
+            _livetvManagerFactory = livetvManagerFactory;
         }
         }
 
 
         /// <summary>
         /// <summary>

+ 31 - 40
MediaBrowser.Providers/Manager/ProviderManager.cs

@@ -36,60 +36,51 @@ namespace MediaBrowser.Providers.Manager
     /// </summary>
     /// </summary>
     public class ProviderManager : IProviderManager, IDisposable
     public class ProviderManager : IProviderManager, IDisposable
     {
     {
-        /// <summary>
-        /// The _logger
-        /// </summary>
         private readonly ILogger _logger;
         private readonly ILogger _logger;
-
-        /// <summary>
-        /// The _HTTP client
-        /// </summary>
         private readonly IHttpClient _httpClient;
         private readonly IHttpClient _httpClient;
-
-        /// <summary>
-        /// The _directory watchers
-        /// </summary>
         private readonly ILibraryMonitor _libraryMonitor;
         private readonly ILibraryMonitor _libraryMonitor;
-
-        /// <summary>
-        /// Gets or sets the configuration manager.
-        /// </summary>
-        /// <value>The configuration manager.</value>
-        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 IImageProvider[] ImageProviders { get; set; }
 
 
-        private readonly IFileSystem _fileSystem;
-
         private IMetadataService[] _metadataServices = { };
         private IMetadataService[] _metadataServices = { };
         private IMetadataProvider[] _metadataProviders = { };
         private IMetadataProvider[] _metadataProviders = { };
         private IEnumerable<IMetadataSaver> _savers;
         private IEnumerable<IMetadataSaver> _savers;
-        private readonly IServerApplicationPaths _appPaths;
-        private readonly IJsonSerializer _json;
 
 
         private IExternalId[] _externalIds;
         private IExternalId[] _externalIds;
 
 
-        private readonly Func<ILibraryManager> _libraryManagerFactory;
         private CancellationTokenSource _disposeCancellationTokenSource = new CancellationTokenSource();
         private CancellationTokenSource _disposeCancellationTokenSource = new CancellationTokenSource();
 
 
         public event EventHandler<GenericEventArgs<BaseItem>> RefreshStarted;
         public event EventHandler<GenericEventArgs<BaseItem>> RefreshStarted;
         public event EventHandler<GenericEventArgs<BaseItem>> RefreshCompleted;
         public event EventHandler<GenericEventArgs<BaseItem>> RefreshCompleted;
         public event EventHandler<GenericEventArgs<Tuple<BaseItem, double>>> RefreshProgress;
         public event EventHandler<GenericEventArgs<Tuple<BaseItem, double>>> RefreshProgress;
 
 
-        private ISubtitleManager _subtitleManager;
-
         /// <summary>
         /// <summary>
         /// Initializes a new instance of the <see cref="ProviderManager" /> class.
         /// Initializes a new instance of the <see cref="ProviderManager" /> class.
         /// </summary>
         /// </summary>
-        public ProviderManager(IHttpClient httpClient, ISubtitleManager subtitleManager, IServerConfigurationManager configurationManager, ILibraryMonitor libraryMonitor, ILoggerFactory loggerFactory, IFileSystem fileSystem, IServerApplicationPaths appPaths, Func<ILibraryManager> libraryManagerFactory, IJsonSerializer json)
+        public ProviderManager(
+            IHttpClient httpClient,
+            ISubtitleManager subtitleManager,
+            IServerConfigurationManager configurationManager,
+            ILibraryMonitor libraryMonitor,
+            ILogger<ProviderManager> logger,
+            IFileSystem fileSystem,
+            IServerApplicationPaths appPaths,
+            ILibraryManager libraryManager,
+            IJsonSerializer json)
         {
         {
-            _logger = loggerFactory.CreateLogger("ProviderManager");
+            _logger = logger;
             _httpClient = httpClient;
             _httpClient = httpClient;
-            ConfigurationManager = configurationManager;
+            _configurationManager = configurationManager;
             _libraryMonitor = libraryMonitor;
             _libraryMonitor = libraryMonitor;
             _fileSystem = fileSystem;
             _fileSystem = fileSystem;
             _appPaths = appPaths;
             _appPaths = appPaths;
-            _libraryManagerFactory = libraryManagerFactory;
+            _libraryManager = libraryManager;
             _json = json;
             _json = json;
             _subtitleManager = subtitleManager;
             _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)
         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)
         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);
             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<IEnumerable<RemoteImageInfo>> GetAvailableRemoteImages(BaseItem item, RemoteImageQuery query, CancellationToken cancellationToken)
         public async Task<IEnumerable<RemoteImageInfo>> GetAvailableRemoteImages(BaseItem item, RemoteImageQuery query, CancellationToken cancellationToken)
@@ -273,7 +264,7 @@ namespace MediaBrowser.Providers.Manager
 
 
         public IEnumerable<IImageProvider> GetImageProviders(BaseItem item, ImageRefreshOptions refreshOptions)
         public IEnumerable<IImageProvider> 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<IImageProvider> GetImageProviders(BaseItem item, LibraryOptions libraryOptions, MetadataOptions options, ImageRefreshOptions refreshOptions, bool includeDisabled)
         private IEnumerable<IImageProvider> GetImageProviders(BaseItem item, LibraryOptions libraryOptions, MetadataOptions options, ImageRefreshOptions refreshOptions, bool includeDisabled)
@@ -328,7 +319,7 @@ namespace MediaBrowser.Providers.Manager
         private IEnumerable<IRemoteImageProvider> GetRemoteImageProviders(BaseItem item, bool includeDisabled)
         private IEnumerable<IRemoteImageProvider> GetRemoteImageProviders(BaseItem item, bool includeDisabled)
         {
         {
             var options = GetMetadataOptions(item);
             var options = GetMetadataOptions(item);
-            var libraryOptions = _libraryManagerFactory().GetLibraryOptions(item);
+            var libraryOptions = _libraryManager.GetLibraryOptions(item);
 
 
             return GetImageProviders(item, libraryOptions, options,
             return GetImageProviders(item, libraryOptions, options,
                     new ImageRefreshOptions(
                     new ImageRefreshOptions(
@@ -593,7 +584,7 @@ namespace MediaBrowser.Providers.Manager
         {
         {
             var type = item.GetType().Name;
             var type = item.GetType().Name;
 
 
-            return ConfigurationManager.Configuration.MetadataOptions
+            return _configurationManager.Configuration.MetadataOptions
                 .FirstOrDefault(i => string.Equals(i.ItemType, type, StringComparison.OrdinalIgnoreCase)) ??
                 .FirstOrDefault(i => string.Equals(i.ItemType, type, StringComparison.OrdinalIgnoreCase)) ??
                 new MetadataOptions();
                 new MetadataOptions();
         }
         }
@@ -623,7 +614,7 @@ namespace MediaBrowser.Providers.Manager
         /// <returns>Task.</returns>
         /// <returns>Task.</returns>
         private void SaveMetadata(BaseItem item, ItemUpdateType updateType, IEnumerable<IMetadataSaver> savers)
         private void SaveMetadata(BaseItem item, ItemUpdateType updateType, IEnumerable<IMetadataSaver> savers)
         {
         {
-            var libraryOptions = _libraryManagerFactory().GetLibraryOptions(item);
+            var libraryOptions = _libraryManager.GetLibraryOptions(item);
 
 
             foreach (var saver in savers.Where(i => IsSaverEnabledForItem(i, item, libraryOptions, updateType, false)))
             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))
             if (!searchInfo.ItemId.Equals(Guid.Empty))
             {
             {
-                referenceItem = _libraryManagerFactory().GetItemById(searchInfo.ItemId);
+                referenceItem = _libraryManager.GetItemById(searchInfo.ItemId);
             }
             }
 
 
             return GetRemoteSearchResults<TItemType, TLookupType>(searchInfo, referenceItem, cancellationToken);
             return GetRemoteSearchResults<TItemType, TLookupType>(searchInfo, referenceItem, cancellationToken);
@@ -771,7 +762,7 @@ namespace MediaBrowser.Providers.Manager
             }
             }
             else
             else
             {
             {
-                libraryOptions = _libraryManagerFactory().GetLibraryOptions(referenceItem);
+                libraryOptions = _libraryManager.GetLibraryOptions(referenceItem);
             }
             }
 
 
             var options = GetMetadataOptions(referenceItem);
             var options = GetMetadataOptions(referenceItem);
@@ -786,11 +777,11 @@ namespace MediaBrowser.Providers.Manager
 
 
             if (string.IsNullOrWhiteSpace(searchInfo.SearchInfo.MetadataLanguage))
             if (string.IsNullOrWhiteSpace(searchInfo.SearchInfo.MetadataLanguage))
             {
             {
-                searchInfo.SearchInfo.MetadataLanguage = ConfigurationManager.Configuration.PreferredMetadataLanguage;
+                searchInfo.SearchInfo.MetadataLanguage = _configurationManager.Configuration.PreferredMetadataLanguage;
             }
             }
             if (string.IsNullOrWhiteSpace(searchInfo.SearchInfo.MetadataCountryCode))
             if (string.IsNullOrWhiteSpace(searchInfo.SearchInfo.MetadataCountryCode))
             {
             {
-                searchInfo.SearchInfo.MetadataCountryCode = ConfigurationManager.Configuration.MetadataCountryCode;
+                searchInfo.SearchInfo.MetadataCountryCode = _configurationManager.Configuration.MetadataCountryCode;
             }
             }
 
 
             var resultList = new List<RemoteSearchResult>();
             var resultList = new List<RemoteSearchResult>();
@@ -1010,7 +1001,7 @@ namespace MediaBrowser.Providers.Manager
 
 
         private async Task StartProcessingRefreshQueue()
         private async Task StartProcessingRefreshQueue()
         {
         {
-            var libraryManager = _libraryManagerFactory();
+            var libraryManager = _libraryManager;
 
 
             if (_disposed)
             if (_disposed)
             {
             {
@@ -1088,7 +1079,7 @@ namespace MediaBrowser.Providers.Manager
 
 
         private async Task RefreshArtist(MusicArtist item, MetadataRefreshOptions options, CancellationToken cancellationToken)
         private async Task RefreshArtist(MusicArtist item, MetadataRefreshOptions options, CancellationToken cancellationToken)
         {
         {
-            var albums = _libraryManagerFactory()
+            var albums = _libraryManager
                 .GetItemList(new InternalItemsQuery
                 .GetItemList(new InternalItemsQuery
                 {
                 {
                     IncludeItemTypes = new[] { nameof(MusicAlbum) },
                     IncludeItemTypes = new[] { nameof(MusicAlbum) },