using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Serilog; using System; using System.IO; using System.Threading.Tasks; using Sony.Filtr.Bootstrap; using Sony.Filtr.Utility; using Sony.Filtr.Database; using System.Net; using Microsoft.AspNetCore.Http; using Sony.Filtr.ErrorLogging; using Microsoft.Extensions.DependencyInjection.Extensions; using ElmahCore.Mvc; using ElmahCore.Sql; using Couchbase; using NLog; using Sony.Filtr.ApolloAPI; using Sony.Filtr.AppleMusic.Playlists; using System.Collections.Generic; using Sony.Filtr.ApolloAPI.Models.Apple; namespace Sony.Filtr.ScheduledTask { public static class Program { public static IConfigurationRoot configuration; public static ServiceProvider _serviceProvider; private static async Task Main(string[] args) { LogManager.Configuration.Variables["taskFolder"] = (args!= null && args.Length > 0 && args[0] != null) ? args[0] : "ScheduledTask"; ServiceCollection serviceCollection = new ServiceCollection(); ConfigureServices(serviceCollection); ServicePointManager.DefaultConnectionLimit = Maybe.GetAppSettingsIntOrDefault("ServicePointManager.DefaultConnectionLimit", 3); var ioc = await new Bootstrapper().InitializeAsync(_serviceProvider.GetService()); var scheduledTaskRunner = ioc.GetInstance(); await scheduledTaskRunner.ExecuteAsync(args); } private static void ConfigureServices(IServiceCollection serviceCollection) { configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetParent(AppContext.BaseDirectory).FullName) .AddJsonFile("appsettings.json", false) .Build(); serviceCollection.AddSingleton(configuration); serviceCollection.TryAddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); var serviceProvider = serviceCollection.BuildServiceProvider(); _serviceProvider = serviceProvider; serviceProvider.GetService(); serviceProvider.GetService(); Maybe.InitializeConfiguration(configuration); } } }