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 }
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>(); });
public Worker(ILogger <Worker> logger, ArmoryBotConfig config) { _logger = logger; _config = config; }
public ArmoryBot(ILogger <Worker> logger, ArmoryBotConfig config) { this.Logger = logger; this.Config = config; this.BlizzAPI = new BlizzardAPI(logger, config); // Initializes Blizzard API }