Files
jellyfin-plugin-enigma2/Jellyfin.Plugin.Enigma2/ServiceRegistrator.cs

44 lines
2.1 KiB
C#

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
{
/// <inheritdoc />
public void RegisterServices(IServiceCollection serviceCollection, IServerApplicationHost applicationHost)
{
serviceCollection.AddSingleton<InternetEpg>();
serviceCollection.AddSingleton<LiveStreamProbe>();
serviceCollection.AddSingleton<LiveStreamRelay>();
serviceCollection.AddSingleton<PreferencesStore>();
serviceCollection.AddTransient<Microsoft.AspNetCore.Hosting.IStartupFilter, NativeChannelFilter>();
serviceCollection.AddSingleton<ILiveTvService, LiveTvService>();
serviceCollection.AddSingleton<ChannelSyncTask>();
serviceCollection.AddSingleton<MediaBrowser.Model.Tasks.IScheduledTask>(provider => provider.GetRequiredService<ChannelSyncTask>());
// 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<IChannel, RecordingsChannel>();
}
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;
}
}
}