using Autofac; using Autofac.Extras.AggregateService; using TrashLib.Config; using TrashLib.Radarr.Config; using TrashLib.Radarr.CustomFormat; using TrashLib.Radarr.CustomFormat.Api; using TrashLib.Radarr.CustomFormat.Cache; using TrashLib.Radarr.CustomFormat.Guide; using TrashLib.Radarr.CustomFormat.Processors; using TrashLib.Radarr.CustomFormat.Processors.GuideSteps; using TrashLib.Radarr.CustomFormat.Processors.PersistenceSteps; using TrashLib.Radarr.QualityDefinition; using TrashLib.Radarr.QualityDefinition.Api; namespace TrashLib.Radarr { public class RadarrAutofacModule : Module { protected override void Load(ContainerBuilder builder) { // Services builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); // Configuration builder.RegisterModule(); builder.RegisterType().As(); // Quality Definition Support builder.RegisterType().As(); builder.RegisterType().As(); // Custom Format Support // builder.RegisterType().As(); builder.RegisterType().As(); // builder.RegisterType().As(); // builder.RegisterType() // .As() // .InstancePerLifetimeScope(); // builder.Register>(c => config => // { // var guidBuilderFactory = c.Resolve>(); // return c.Resolve(TypedParameter.From(guidBuilderFactory(config))); // }); // Guide Processor // todo: register as singleton to avoid parsing guide multiple times when using 2 or more instances in config builder.RegisterType().As(); builder.RegisterType().As(); // Persistence Processor builder.RegisterType().As(); builder.RegisterAggregateService(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); } } }