diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs index 634906afc5..a751278b72 100644 --- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs +++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs @@ -23,6 +23,7 @@ namespace MediaBrowser.Api.Playback.Progressive [Route("/Videos/{Id}/stream.mpeg", "GET")] [Route("/Videos/{Id}/stream.avi", "GET")] [Route("/Videos/{Id}/stream.m2ts", "GET")] + [Route("/Videos/{Id}/stream.3gp", "GET")] [Route("/Videos/{Id}/stream", "GET")] [Route("/Videos/{Id}/stream.ts", "HEAD")] [Route("/Videos/{Id}/stream.webm", "HEAD")] @@ -34,6 +35,7 @@ namespace MediaBrowser.Api.Playback.Progressive [Route("/Videos/{Id}/stream.mkv", "HEAD")] [Route("/Videos/{Id}/stream.mpeg", "HEAD")] [Route("/Videos/{Id}/stream.avi", "HEAD")] + [Route("/Videos/{Id}/stream.3gp", "HEAD")] [Route("/Videos/{Id}/stream.m2ts", "HEAD")] [Route("/Videos/{Id}/stream", "HEAD")] [Api(Description = "Gets a video stream")] diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index 017f69b626..4b8574c89a 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -195,8 +195,6 @@ namespace MediaBrowser.Common.Implementations Task.Run(() => ConfigureAutoRunAtStartup()); - Task.Run(() => SecurityManager.LoadAllRegistrationInfo()); - ConfigurationManager.ConfigurationUpdated += ConfigurationManager_ConfigurationUpdated; }); } @@ -236,11 +234,6 @@ namespace MediaBrowser.Common.Implementations var assemblies = GetComposablePartAssemblies().ToArray(); - foreach (var assembly in assemblies) - { - Logger.Info("Loading {0}", assembly.FullName); - } - AllTypes = assemblies.SelectMany(GetTypes).ToArray(); AllConcreteTypes = AllTypes.Where(t => t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType).ToArray(); @@ -270,19 +263,15 @@ namespace MediaBrowser.Common.Implementations RegisterSingleInstance(TaskManager); HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, Logger); - RegisterSingleInstance(HttpClient); NetworkManager = new NetworkManager(); - RegisterSingleInstance(NetworkManager); SecurityManager = new PluginSecurityManager(this, HttpClient, JsonSerializer, ApplicationPaths); - RegisterSingleInstance(SecurityManager); PackageManager = new PackageManager(SecurityManager, NetworkManager, HttpClient, ApplicationPaths, JsonSerializer, Logger); - RegisterSingleInstance(PackageManager); }); } diff --git a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs index 6ac4d2d5d2..c7c3b3a576 100644 --- a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs +++ b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs @@ -20,15 +20,15 @@ namespace MediaBrowser.Common.Implementations.Security /// /// The _is MB supporter /// - private bool? _isMBSupporter; + private bool? _isMbSupporter; /// /// The _is MB supporter initialized /// - private bool _isMBSupporterInitialized; + private bool _isMbSupporterInitialized; /// /// The _is MB supporter sync lock /// - private object _isMBSupporterSyncLock = new object(); + private object _isMbSupporterSyncLock = new object(); /// /// Gets a value indicating whether this instance is MB supporter. @@ -38,14 +38,15 @@ namespace MediaBrowser.Common.Implementations.Security { get { - LazyInitializer.EnsureInitialized(ref _isMBSupporter, ref _isMBSupporterInitialized, ref _isMBSupporterSyncLock, () => GetRegistrationStatus("MBSupporter").Result.IsRegistered); - return _isMBSupporter.Value; + LazyInitializer.EnsureInitialized(ref _isMbSupporter, ref _isMbSupporterInitialized, ref _isMbSupporterSyncLock, () => GetRegistrationStatus("MBSupporter").Result.IsRegistered); + return _isMbSupporter.Value; } } - private IHttpClient _httpClient; - private IJsonSerializer _jsonSerializer; - private IApplicationHost _appHost; + private readonly IHttpClient _httpClient; + private readonly IJsonSerializer _jsonSerializer; + private readonly IApplicationHost _appHost; + private readonly IApplicationPaths _applciationPaths; private IEnumerable _registeredEntities; protected IEnumerable RegisteredEntities { @@ -65,10 +66,10 @@ namespace MediaBrowser.Common.Implementations.Security throw new ArgumentNullException("httpClient"); } + _applciationPaths = appPaths; _appHost = appHost; _httpClient = httpClient; _jsonSerializer = jsonSerializer; - MBRegistration.Init(appPaths); } /// @@ -92,6 +93,9 @@ namespace MediaBrowser.Common.Implementations.Security /// Task{MBRegistrationRecord}. public async Task GetRegistrationStatus(string feature, string mb2Equivalent = null) { + // Do this on demend instead of in the constructor to delay the external assembly load + // Todo: Refactor external methods to take app paths as a param + MBRegistration.Init(_applciationPaths); return await MBRegistration.GetRegistrationStatus(_httpClient, _jsonSerializer, feature, mb2Equivalent).ConfigureAwait(false); } @@ -101,9 +105,18 @@ namespace MediaBrowser.Common.Implementations.Security /// The supporter key. public string SupporterKey { - get { return MBRegistration.SupporterKey; } + get + { + // Do this on demend instead of in the constructor to delay the external assembly load + // Todo: Refactor external methods to take app paths as a param + MBRegistration.Init(_applciationPaths); + return MBRegistration.SupporterKey; + } set { + // Do this on demend instead of in the constructor to delay the external assembly load + // Todo: Refactor external methods to take app paths as a param + MBRegistration.Init(_applciationPaths); if (value != MBRegistration.SupporterKey) { MBRegistration.SupporterKey = value; @@ -119,9 +132,18 @@ namespace MediaBrowser.Common.Implementations.Security /// The legacy key. public string LegacyKey { - get { return MBRegistration.LegacyKey; } + get + { + // Do this on demend instead of in the constructor to delay the external assembly load + // Todo: Refactor external methods to take app paths as a param + MBRegistration.Init(_applciationPaths); + return MBRegistration.LegacyKey; + } set { + // Do this on demend instead of in the constructor to delay the external assembly load + // Todo: Refactor external methods to take app paths as a param + MBRegistration.Init(_applciationPaths); if (value != MBRegistration.LegacyKey) { MBRegistration.LegacyKey = value; @@ -136,8 +158,8 @@ namespace MediaBrowser.Common.Implementations.Security /// private void ResetSupporterInfo() { - _isMBSupporter = null; - _isMBSupporterInitialized = false; + _isMbSupporter = null; + _isMbSupporterInitialized = false; } } } diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 67ec219bb4..e8e90b97ad 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -668,7 +668,7 @@ namespace MediaBrowser.Controller.Entities return LibraryManager.ResolvePaths