コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #4
0
        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);
        }