private async Task DownloadItems(AuctionHouseResponse ahResponse) { var counter = 1; var itemIds = ahResponse.Auctions .Select(x => x.AuctionedItem.Id) .Distinct() .OrderBy(x => x) .ToList(); var localItems = await _itemRepository.GetAllItemIdsAsync(); var missingItems = itemIds.Except(localItems); foreach (var itemId in missingItems) { await Task.Delay(1); // so we don't throttle Blizzard API var url = BlizzardApi.Item(_baseUrl, itemId); try { var item = JsonConvert.DeserializeObject <Item>(await _httpClient.GetStringAsync(url)); await _itemRepository.InsertOneAsync(item); Console.WriteLine($"[{counter++}] ID: {item.ItemId}, Name: {item.Name}"); } catch (Exception e) { _logger.LogWarning($"Exception occurred while parsing items from Blizzard API: {e.Message}"); } } }
public async Task <BlizzardAccessToken> GetAccessToken() { var url = BlizzardApi.AccessToken(_baseUrl); var clientId = _blizzardApiSettings.Value.BlizzardClientId; var clientSecret = _blizzardApiSettings.Value.BlizzardClientSecret; var parameters = new List <KeyValuePair <string, string> > { new("grant_type", "client_credentials"), new("client_id", clientId), new("client_secret", clientSecret) };
public async Task UpdateAuctionHouseAuctions() { var url = BlizzardApi.AuctionHouseAuctions(_baseUrl, 3391); var response = await _httpClient.GetAsync(url); var ahResponse = JsonConvert.DeserializeObject <AuctionHouseResponse>(await response.Content.ReadAsStringAsync()); await DownloadItems(ahResponse); //await UpdateItemPrices(ahResponse); await UpdatePrices(ahResponse); }