using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller; using Microsoft.Extensions.DependencyInjection; using System.Net.Http; using Jellyfin.Plugin.Enigma2.Helpers; using MediaBrowser.Common.Configuration; using System.IO; using System.Linq; using System.Xml; using System.Xml.Linq; namespace Jellyfin.Plugin.Enigma2 { public class ServiceRegistrator : IPluginServiceRegistrator { /// public void RegisterServices(IServiceCollection serviceCollection, IServerApplicationHost applicationHost) { serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddTransient(); serviceCollection.AddSingleton(); // Jellyfin registers services before constructing Plugin.Instance. var paths = serviceCollection.Last(x => x.ServiceType == typeof(IApplicationPaths)).ImplementationInstance as IApplicationPaths; if (VuRecordingsEnabled(Path.Combine(paths.PluginConfigurationsPath, "Jellyfin.Plugin.Enigma2.xml"))) serviceCollection.AddSingleton(); } public static bool VuRecordingsEnabled(string configurationPath) { if (!File.Exists(configurationPath)) return false; using var reader = XmlReader.Create(configurationPath, new XmlReaderSettings { DtdProcessing = DtdProcessing.Prohibit, XmlResolver = null }); var value = XDocument.Load(reader).Root?.Element("EnableVuRecordings")?.Value; return bool.TryParse(value, out var enabled) && enabled; } } }