Beispiel #1
0
        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");
        }
Beispiel #2
0
        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);
        }