public static void Main(string[] args) { IConfiguration config = LoadConfiguration(); applicationSettings = new ApplicationSettings(); cacheSettings = new CacheSettings(); dataStoreSettings = new DataStoreSettings(); nuciLoggerSettings = new NuciLoggerSettings(); config.Bind(nameof(ApplicationSettings), applicationSettings); config.Bind(nameof(CacheSettings), cacheSettings); config.Bind(nameof(DataStoreSettings), dataStoreSettings); config.Bind(nameof(NuciLoggerSettings), nuciLoggerSettings); IServiceProvider serviceProvider = new ServiceCollection() .AddSingleton(applicationSettings) .AddSingleton(cacheSettings) .AddSingleton(dataStoreSettings) .AddSingleton(nuciLoggerSettings) .AddSingleton <ICacheManager, CacheManager>() .AddSingleton <IDnsResolver, DnsResolver>() .AddSingleton <IFileDownloader, FileDownloader>() .AddSingleton <IPlaylistAggregator, PlaylistAggregator>() .AddSingleton <IPlaylistFetcher, PlaylistFetcher>() .AddSingleton <IPlaylistFileBuilder, PlaylistFileBuilder>() .AddSingleton <IChannelMatcher, ChannelMatcher>() .AddSingleton <IMediaSourceChecker, MediaSourceChecker>() .AddSingleton <IRepository <ChannelDefinitionEntity> >(s => new XmlRepository <ChannelDefinitionEntity>(dataStoreSettings.ChannelStorePath)) .AddSingleton <IRepository <GroupEntity> >(s => new XmlRepository <GroupEntity>(dataStoreSettings.GroupStorePath)) .AddSingleton <IRepository <PlaylistProviderEntity> >(s => new XmlRepository <PlaylistProviderEntity>(dataStoreSettings.PlaylistProviderStorePath)) .AddSingleton <ILogger, NuciLogger>() .BuildServiceProvider(); ILogger logger = serviceProvider.GetService <ILogger>(); logger.Info(Operation.StartUp, OperationStatus.Success); try { IPlaylistAggregator aggregator = serviceProvider.GetService <IPlaylistAggregator>(); string playlistFile = aggregator.GatherPlaylist(); File.WriteAllText(applicationSettings.OutputPlaylistPath, playlistFile); } catch (AggregateException ex) { foreach (Exception innerException in ex.InnerExceptions) { logger.Fatal(Operation.Unknown, OperationStatus.Failure, innerException); } } catch (Exception ex) { logger.Fatal(Operation.Unknown, OperationStatus.Failure, ex); } logger.Info(Operation.ShutDown, OperationStatus.Success); }
public static void Main(string[] args) { IConfiguration config = LoadConfiguration(); applicationSettings = new ApplicationSettings(); nuciLoggerSettings = new NuciLoggerSettings(); config.Bind(nameof(applicationSettings), applicationSettings); config.Bind(nameof(nuciLoggerSettings), nuciLoggerSettings); Options options = Options.FromArguments(args); serviceProvider = new ServiceCollection() .AddSingleton(applicationSettings) .AddSingleton(nuciLoggerSettings) .AddSingleton(options) .AddSingleton <IRepository <ChannelStreamEntity> >(x => new XmlRepository <ChannelStreamEntity>(options.InputFile)) .AddSingleton <IFileDownloader, FileDownloader>() .AddSingleton <IPlaylistUrlRetriever, PlaylistUrlRetriever>() .AddSingleton <IPlaylistFileGenerator, PlaylistFileGenerator>() .AddSingleton <ILogger, NuciLogger>() .BuildServiceProvider(); ILogger logger = serviceProvider.GetService <ILogger>(); logger.Info(Operation.StartUp, OperationStatus.Success); try { GetPlaylist(options); } catch (AggregateException ex) { foreach (Exception innerException in ex.InnerExceptions) { logger.Fatal(Operation.Unknown, OperationStatus.Failure, innerException); } } catch (Exception ex) { logger.Fatal(Operation.Unknown, OperationStatus.Failure, ex); } finally { WebDriverHandler.CloseDriver(); } logger.Info(Operation.ShutDown, OperationStatus.Success); }
public static IServiceCollection AddConfigurations(this IServiceCollection services, IConfiguration configuration) { dataStoreSettings = new DataStoreSettings(); telegramSettings = new TelegramSettings(); loggingSettings = new NuciLoggerSettings(); configuration.Bind(nameof(DataStoreSettings), dataStoreSettings); configuration.Bind(nameof(TelegramSettings), telegramSettings); configuration.Bind(nameof(NuciLoggerSettings), loggingSettings); services.AddSingleton(dataStoreSettings); services.AddSingleton(telegramSettings); services.AddSingleton(loggingSettings); return(services); }
static IConfiguration LoadConfiguration() { botSettings = new BotSettings(); cacheSettings = new CacheSettings(); debugSettings = new DebugSettings(); loggerSettings = new NuciLoggerSettings(); IConfiguration config = new ConfigurationBuilder() .AddJsonFile("appsettings.json", true, true) .Build(); config.Bind(nameof(BotSettings), botSettings); config.Bind(nameof(CacheSettings), cacheSettings); config.Bind(nameof(DebugSettings), debugSettings); config.Bind(nameof(NuciLoggerSettings), loggerSettings); return(config); }