private async Task GetNameAndImagesForCsgo() { _logger.Info($"Starting image fetchin for CSGO"); var request = new RequestMessage(HttpMethod.Get, $"http://api.csgo.steamlytics.xyz/v1/items?key={_configuration.ApiKey}"); var imageResponse = await _httpRequestParser.ExecuteRawAsync(request); var response = CsgoSteamlyticsResource.FromJson(imageResponse); var listCount = response.NumItems; var list = response.Items; var regex = new Regex("\\/\\/steamcommunity-a.akamaihd.net\\/economy\\/image\\/(.+)"); var csgoPricing = await _pricingRepository.GetAllAsync(SteamGames.Csgo); var regExService = new RegexService(); for (var index = 0; index < listCount; index++) { var item = list[index]; var name = item.MarketHashName; if (string.IsNullOrEmpty(item.IconUrl)) { continue; } string regExMatch; try { regExMatch = regExService.GetFirstGroupMatch(regex, item.IconUrl); } catch (Exception e) { e.Data.Add("name", name); throw; } var imgUrl = regExMatch; foreach (var csgoItem in csgoPricing.Items) { if (csgoItem.MarketHashName != name) { continue; } csgoItem.IconUrl = imgUrl; break; } } await _pricingRepository.InsertOrUpdateAsync(csgoPricing); _logger.Info($"Images for CSGO done"); }
public async Task <List <SteamItemPrice> > GetSteamPricingAsync(SteamItemLookup[] itemsToLookup) { var gameGroups = itemsToLookup.GroupBy(lookup => lookup.AppId); var itemsToReturn = new List <SteamItemPrice>(); foreach (var gameGroup in gameGroups) { var items = await _pricingRepository.GetAllAsync(SteamPaymentMethodToAppId.ToEnum(gameGroup.Key)); foreach (var steamItemLookup in itemsToLookup) { var result = items.Items.FirstOrDefault(price => price.MarketHashName == steamItemLookup.MarketHashName); if (result == null) { throw new Exception(); } itemsToReturn.Add(result); } } return(itemsToReturn); }