using System.IO; using Jellyfin.Plugin.RedditComments.Services; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller; using MediaBrowser.Controller.Plugins; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace Jellyfin.Plugin.RedditComments; /// /// Registers the plugin's services in the Jellyfin DI container. /// public class PluginServiceRegistrator : IPluginServiceRegistrator { /// public void RegisterServices(IServiceCollection serviceCollection, IServerApplicationHost applicationHost) { serviceCollection.AddSingleton(); serviceCollection.AddSingleton(sp => new RedditClient(sp.GetRequiredService>(), sp.GetRequiredService())); // The path is resolved inside the factory (not eagerly here) because the host's service // provider does not exist yet while RegisterServices is running. serviceCollection.AddSingleton(sp => { var dbPath = Path.Combine( sp.GetRequiredService().PluginConfigurationsPath, "RedditComments", "reddit-comments.db"); return new CommentCache(dbPath, sp.GetRequiredService>()); }); serviceCollection.AddSingleton(sp => new RedditCommentsService( sp.GetRequiredService>(), sp.GetRequiredService(), sp.GetRequiredService())); serviceCollection.AddHostedService(); } }