示例#1
0
        public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .UseSystemd()                         // Linux service lifetime management
        .ConfigureAppConfiguration((context, builder) =>
        {
            builder
            .SetBasePath(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location))                                     // Required for Linux service
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json")
            .AddJsonFile("dbsettings.json")
            .AddJsonFile($"dbsettings.{context.HostingEnvironment.EnvironmentName}.json")
            .AddEnvironmentVariables()
            .Build();
        })
        .ConfigureServices((hostContext, services) =>
        {
            var proxies = new List <string>();
            hostContext.Configuration.GetSection("TPBProxies").Bind(proxies);
            if (proxies.Count == 0)
            {
                throw new Exception("TPB Proxies configuration missing");
            }
            TPBProxies.SetProxies(proxies.ToArray());

            var downloadFinishedWorkerConfiguration = new DownloadFinishedWorkerConfiguration();
            hostContext.Configuration.GetSection("DownloadFinishedWorker").Bind(downloadFinishedWorkerConfiguration);
            var transmissionConfiguration = new TransmissionConfiguration();
            hostContext.Configuration.GetSection("Transmission").Bind(transmissionConfiguration);
            var encoderConfiguration = new EncoderConfiguration();
            hostContext.Configuration.GetSection("Encoder").Bind(encoderConfiguration);
            var sofakingConfiguration = new SoFakingConfiguration();
            hostContext.Configuration.GetSection("Sofaking").Bind(sofakingConfiguration);

            services
            .AddHttpClient()
            .AddSingleton(transmissionConfiguration)
            .AddSingleton(sofakingConfiguration)
            .AddSingleton <TransmissionHttpClientFactory>()
            .AddSingleton(downloadFinishedWorkerConfiguration)
            .AddSingleton(encoderConfiguration)
            .AddSingleton(new SoFakingContextFactory())
            .AddSingleton <MovieService>()
            .AddSingleton <TPBParserService>()
            .AddSingleton <ITorrentClientService, TransmissionService>()
            .AddSingleton <IVerifiedMovieSearchService, ImdbService>()
            //.AddSingleton<IEncoderService, FFMPEGEncoderService>()
            .AddHostedService <SoFakingWorker>();
        });
示例#2
0
 public SoFakingWorker(ILogger <SoFakingWorker> logger, ILogger <FFMPEGEncoderService> loggerEnc, IHttpClientFactory clientFactory, DownloadFinishedWorkerConfiguration configuration, MovieService movieService, ITorrentClientService torrentClient, /* IEncoderService encoderService,*/ SoFakingConfiguration sofakingConfiguration, EncoderConfiguration encoderConfiguration)
 {
     if (clientFactory == null)
     {
         throw new ArgumentNullException(nameof(clientFactory));
     }
     if (movieService == null)
     {
         throw new ArgumentNullException(nameof(movieService));
     }
     if (configuration == null)
     {
         throw new ArgumentNullException(nameof(configuration));
     }
     if (logger == null)
     {
         throw new ArgumentNullException(nameof(logger));
     }
     if (loggerEnc == null)
     {
         throw new ArgumentNullException(nameof(loggerEnc));
     }
     if (torrentClient == null)
     {
         throw new ArgumentNullException(nameof(torrentClient));
     }
     if (encoderConfiguration == null)
     {
         throw new ArgumentNullException(nameof(encoderConfiguration));
     }
     if (sofakingConfiguration == null)
     {
         throw new ArgumentNullException(nameof(sofakingConfiguration));
     }
     _sofakingConfiguration = sofakingConfiguration;
     _clientFactory         = clientFactory;
     _movieService          = movieService;
     _configuration         = configuration;
     _logger               = logger;
     _loggerEnc            = loggerEnc;
     _torrentClient        = torrentClient;
     _encoderConfiguration = encoderConfiguration;
 }