コード例 #1
0
ファイル: NetworkHelper.cs プロジェクト: AndMu/Wikiled.Delfi
        public NetworkHelper()
        {
            var builder = new ServiceCollection();

            builder.RegisterModule <MainNewsModule>();
            builder.RegisterModule <LoggingModule>();
            builder.RegisterModule(DelfiModule.CreateDaily("Data"));

            builder.RegisterModule(
                new NetworkModule(
                    new RetrieveConfiguration
            {
                LongDelay      = 1000,
                CallDelay      = 0,
                ShortDelay     = 1000,
                LongRetryCodes = new[] { HttpStatusCode.Forbidden },
                RetryCodes     = new[]
                {
                    HttpStatusCode.Forbidden,
                    HttpStatusCode.RequestTimeout,              // 408
                    HttpStatusCode.InternalServerError,         // 500
                    HttpStatusCode.BadGateway,                  // 502
                    HttpStatusCode.ServiceUnavailable,          // 503
                    HttpStatusCode.GatewayTimeout               // 504
                },
                MaxConcurrent = 1
            }));

            Container = builder.BuildServiceProvider();
            Retrieval = Container.GetRequiredService <ITrackedRetrieval>();
        }
コード例 #2
0
        protected override void ConfigureSpecific(IServiceCollection builder)
        {
            logger.LogDebug("ConfigureSpecific");
            builder.AddHostedService <TrackingInstance>();
            builder.RegisterModule <MainNewsModule>();
            var feeds = new FeedsFactory().Read().Result;

            builder.RegisterModule(DelfiModule.CreateWithFeeds(config.Location, feeds));
            builder.RegisterModule(new NetworkModule(config.Service));
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: AndMu/Wikiled.Delfi
        public static async Task Main(string[] args)
        {
            log.Info("Starting {0} version utility...", Assembly.GetExecutingAssembly().GetName().Version);
            var feeds   = await new FeedsFactory().Read().ConfigureAwait(false);
            var builder = new ServiceCollection();

            builder.RegisterModule <LoggingModule>();
            builder.RegisterModule <MainNewsModule>();
            builder.RegisterModule <CommonModule>();
            builder.RegisterModule(DelfiModule.CreateWithFeeds("Data", feeds));
            builder.RegisterModule(
                new NetworkModule(new RetrieveConfiguration
            {
                LongDelay      = 60 * 20,
                CallDelay      = 0,
                ShortDelay     = 1000,
                LongRetryCodes = new[] { HttpStatusCode.Forbidden, },
                RetryCodes     = new[]
                {
                    HttpStatusCode.Forbidden,
                    HttpStatusCode.RequestTimeout,                                // 408
                    HttpStatusCode.InternalServerError,                           // 500
                    HttpStatusCode.BadGateway,                                    // 502
                    HttpStatusCode.ServiceUnavailable,                            // 503
                    HttpStatusCode.GatewayTimeout                                 // 504
                },
                MaxConcurrent = 1
            }));


            var            container     = builder.BuildServiceProvider();
            ILoggerFactory loggerFactory = container.GetRequiredService <ILoggerFactory>();

            loggerFactory.AddNLog(new NLogProviderOptions {
                CaptureMessageTemplates = true, CaptureMessageProperties = true
            });

            IArticlesMonitor monitor = container.GetRequiredService <IArticlesMonitor>();

            "Data".EnsureDirectoryExistence();
            IArticlesPersistency persistency = container.GetRequiredService <IArticlesPersistency>();

            monitor.NewArticlesStream().Subscribe(item => persistency.Save(item));
            monitor.MonitorUpdatesStream().Subscribe(item => persistency.Save(item));
            Console.ReadLine();
        }