2020-02-09 18:08:34 +00:00
|
|
|
using Autofac;
|
2018-03-10 08:05:56 +00:00
|
|
|
using Jackett.Common.Indexers;
|
|
|
|
using Jackett.Common.Indexers.Meta;
|
2017-11-13 08:38:38 +00:00
|
|
|
using Jackett.Common.Models.Config;
|
2018-03-10 08:05:56 +00:00
|
|
|
using Jackett.Common.Services;
|
|
|
|
using Jackett.Common.Services.Interfaces;
|
|
|
|
using Jackett.Common.Utils.Clients;
|
2017-04-15 08:45:10 +00:00
|
|
|
|
2017-11-13 08:38:38 +00:00
|
|
|
namespace Jackett.Common.Plumbing
|
2017-04-15 08:45:10 +00:00
|
|
|
{
|
|
|
|
public class JackettModule : Autofac.Module
|
|
|
|
{
|
2020-02-10 22:16:19 +00:00
|
|
|
private readonly RuntimeSettings _runtimeSettings;
|
2017-11-13 08:38:38 +00:00
|
|
|
|
2020-02-25 16:08:03 +00:00
|
|
|
public JackettModule(RuntimeSettings runtimeSettings) => _runtimeSettings = runtimeSettings;
|
2017-11-13 08:38:38 +00:00
|
|
|
|
2017-07-11 20:32:56 +00:00
|
|
|
protected override void Load(ContainerBuilder builder)
|
2017-04-15 08:45:10 +00:00
|
|
|
{
|
2017-11-05 09:42:03 +00:00
|
|
|
// Just register everything! TODO: Something better and more explicit than scanning everything.
|
2020-02-09 02:35:16 +00:00
|
|
|
builder.RegisterAssemblyTypes(typeof(JackettModule).Assembly)
|
|
|
|
.Except<IIndexer>()
|
|
|
|
.Except<IImdbResolver>()
|
|
|
|
.Except<OmdbResolver>()
|
|
|
|
.Except<IFallbackStrategyProvider>()
|
|
|
|
.Except<ImdbFallbackStrategyProvider>()
|
|
|
|
.Except<IFallbackStrategy>()
|
|
|
|
.Except<ImdbFallbackStrategy>()
|
|
|
|
.Except<IResultFilterProvider>()
|
|
|
|
.Except<ImdbTitleResultFilterProvider>()
|
|
|
|
.Except<IResultFilter>()
|
|
|
|
.Except<ImdbTitleResultFilterProvider>()
|
|
|
|
.Except<BaseMetaIndexer>()
|
|
|
|
.Except<AggregateIndexer>()
|
|
|
|
.Except<CardigannIndexer>()
|
|
|
|
.AsImplementedInterfaces().SingleInstance();
|
2017-11-13 08:38:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
builder.RegisterInstance(_runtimeSettings);
|
2020-02-25 16:08:03 +00:00
|
|
|
builder.Register(BuildServerConfig).As<ServerConfig>().SingleInstance();
|
2017-07-11 20:32:56 +00:00
|
|
|
builder.RegisterType<HttpWebClient>();
|
2018-08-31 10:04:36 +00:00
|
|
|
|
2017-04-15 08:45:10 +00:00
|
|
|
// Register the best web client for the platform or the override
|
2017-11-13 08:38:38 +00:00
|
|
|
switch (_runtimeSettings.ClientOverride)
|
2017-07-11 20:32:56 +00:00
|
|
|
{
|
|
|
|
case "httpclient2":
|
2017-12-07 13:35:50 +00:00
|
|
|
RegisterWebClient<HttpWebClient2>(builder);
|
2017-07-11 20:32:56 +00:00
|
|
|
break;
|
2020-09-19 17:16:13 +00:00
|
|
|
default: // "httpclient"
|
2018-07-14 04:44:23 +00:00
|
|
|
RegisterWebClient<HttpWebClient>(builder);
|
2017-07-11 20:32:56 +00:00
|
|
|
break;
|
2017-04-15 08:45:10 +00:00
|
|
|
}
|
2017-12-07 13:35:50 +00:00
|
|
|
}
|
2017-11-05 09:42:03 +00:00
|
|
|
|
2020-02-25 16:08:03 +00:00
|
|
|
private void RegisterWebClient<WebClientType>(ContainerBuilder builder) => builder.RegisterType<WebClientType>().As<WebClient>();
|
2017-11-05 09:42:03 +00:00
|
|
|
|
2017-11-13 08:38:38 +00:00
|
|
|
private ServerConfig BuildServerConfig(IComponentContext ctx)
|
2017-11-05 09:42:03 +00:00
|
|
|
{
|
|
|
|
var configService = ctx.Resolve<IConfigurationService>();
|
2018-06-17 01:48:59 +00:00
|
|
|
return configService.BuildServerConfig(_runtimeSettings);
|
2017-11-05 09:42:03 +00:00
|
|
|
}
|
2017-04-15 08:45:10 +00:00
|
|
|
}
|
|
|
|
}
|