示例#1
0
        private long MplusSeasonID = -1;                                    // Stores current M+ Season as obtained by this.GetGameData()

        public BlizzardAPI(ILogger <Worker> logger, ArmoryBotConfig config) // constructor
        {
            this.Logger   = logger;
            this.Config   = config;
            this.Services = new ServiceCollection();
            this.Services.AddHttpClient("default", client =>
            {
                client.Timeout = TimeSpan.FromSeconds(15);
                client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate");
            })
            .AddPolicyHandler(HttpPolicyExtensions
                              .HandleTransientHttpError()                            // HttpRequestException, 5XX and 408
                              .OrResult(response => (int)response.StatusCode != 200) // Only accept 200 'OK'
                              .WaitAndRetryAsync(3, delay => TimeSpan.FromMilliseconds(250)))
            .ConfigurePrimaryHttpMessageHandler(handler =>
            {
                return(new HttpClientHandler()
                {
                    AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
                });
            });
            this.ClientFactory = this.Services.BuildServiceProvider().GetService <IHttpClientFactory>();
#pragma warning disable 4014
            this.RequestToken(); // Obtain initial BlizzAPI Token (cannot await in constructor)
#pragma warning restore 4014
        }
示例#2
0
 public static IHostBuilder CreateHostBuilder(string[] args) =>
 Host.CreateDefaultBuilder(args)
 .UseWindowsService()
 .UseSystemd()
 .ConfigureServices((hostContext, services) =>
 {
     ArmoryBotConfig config = hostContext.Configuration.GetSection("ArmoryBotConfig").Get <ArmoryBotConfig>();    // Read Config from appsettings.json
     services.AddSingleton(config);
     services.AddHostedService <Worker>();
 });
示例#3
0
 public Worker(ILogger <Worker> logger, ArmoryBotConfig config)
 {
     _logger = logger;
     _config = config;
 }
示例#4
0
 public ArmoryBot(ILogger <Worker> logger, ArmoryBotConfig config)
 {
     this.Logger   = logger;
     this.Config   = config;
     this.BlizzAPI = new BlizzardAPI(logger, config); // Initializes Blizzard API
 }