57 lines
2.5 KiB
C#
57 lines
2.5 KiB
C#
using Jellyfin.Plugin.SRFPlay.Api;
|
|
using Jellyfin.Plugin.SRFPlay.Channels;
|
|
using Jellyfin.Plugin.SRFPlay.LiveTv;
|
|
using Jellyfin.Plugin.SRFPlay.Providers;
|
|
using Jellyfin.Plugin.SRFPlay.ScheduledTasks;
|
|
using Jellyfin.Plugin.SRFPlay.Services;
|
|
using Jellyfin.Plugin.SRFPlay.Services.Interfaces;
|
|
using MediaBrowser.Controller;
|
|
using MediaBrowser.Controller.Channels;
|
|
using MediaBrowser.Controller.LiveTv;
|
|
using MediaBrowser.Controller.Plugins;
|
|
using MediaBrowser.Model.Tasks;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace Jellyfin.Plugin.SRFPlay;
|
|
|
|
/// <summary>
|
|
/// Service registrator for dependency injection.
|
|
/// </summary>
|
|
public class ServiceRegistrator : IPluginServiceRegistrator
|
|
{
|
|
/// <inheritdoc />
|
|
public void RegisterServices(IServiceCollection serviceCollection, IServerApplicationHost applicationHost)
|
|
{
|
|
// Register API client factory
|
|
serviceCollection.AddSingleton<ISRFApiClientFactory, SRFApiClientFactory>();
|
|
|
|
// Register core services with interfaces
|
|
serviceCollection.AddSingleton<IMetadataCache, MetadataCache>();
|
|
serviceCollection.AddSingleton<IStreamUrlResolver, StreamUrlResolver>();
|
|
serviceCollection.AddSingleton<IMediaCompositionFetcher, MediaCompositionFetcher>();
|
|
serviceCollection.AddSingleton<IStreamProxyService, StreamProxyService>();
|
|
serviceCollection.AddSingleton<IMediaSourceFactory, MediaSourceFactory>();
|
|
serviceCollection.AddSingleton<IContentExpirationService, ContentExpirationService>();
|
|
serviceCollection.AddSingleton<IContentRefreshService, ContentRefreshService>();
|
|
serviceCollection.AddSingleton<ICategoryService, CategoryService>();
|
|
|
|
// Register metadata providers
|
|
serviceCollection.AddSingleton<SRFSeriesProvider>();
|
|
serviceCollection.AddSingleton<SRFEpisodeProvider>();
|
|
serviceCollection.AddSingleton<SRFImageProvider>();
|
|
|
|
// Register media source provider
|
|
serviceCollection.AddSingleton<SRFMediaProvider>();
|
|
|
|
// Register scheduled tasks
|
|
serviceCollection.AddSingleton<IScheduledTask, ContentRefreshTask>();
|
|
serviceCollection.AddSingleton<IScheduledTask, ExpirationCheckTask>();
|
|
|
|
// Register channel - must register as IChannel interface for Jellyfin to discover it
|
|
serviceCollection.AddSingleton<IChannel, SRFPlayChannel>();
|
|
|
|
// Register Live TV service - provides virtual channels for scheduled livestreams
|
|
serviceCollection.AddSingleton<ILiveTvService, SRFLiveTvService>();
|
|
}
|
|
}
|