Beispiel #1
0
        public void UpdateBeers(List <Beer> beers, Func <Beer, bool> predicate)
        {
            if (beers.Count == 0)
            {
                return;
            }

            long offset  = 0;
            int  counter = 0;
            bool isRun   = true;

            while (isRun)
            {
                HttpResponseMessage httpResponse = GetHttpResponse($"user/beers/?offset={offset}&limit=50");
                if ((long)httpResponse.StatusCode == 429)
                {
                    throw new ArgumentException(httpResponse.ReasonPhrase);
                }

                string         responseBody   = httpResponse.Content.ReadAsStringAsync().Result;
                BeersQuickType beersQuickType = JsonConvert.DeserializeObject <BeersQuickType>(responseBody, jsonSerializerSettings);

                int countUpdate = UpdateBeersHelper.UpdateBeers(beers, beersQuickType);
                if (countUpdate > 0)
                {
                    counter += countUpdate;
                    UploadedCountInvoke(counter);
                }

                if (beersQuickType.Response.Pagination.Offset.HasValue)
                {
                    offset = beersQuickType.Response.Pagination.Offset.Value;
                }
                else
                {
                    isRun = false;
                }

                if (predicate != null && !beers.Any(predicate))
                {
                    isRun = false;
                }
            }
        }
Beispiel #2
0
        public static int UpdateBeers(List <Beer> beers, BeersQuickType beersQuickType)
        {
            int            counter  = 0;
            List <BeerWeb> webBeers = beersQuickType.Response.Beers.Items.Select(item => item.Beer).ToList();

            foreach (BeerWeb webBeer in webBeers)
            {
                Beer beer = beers.FirstOrDefault(item => item.Id == webBeer.Bid);
                if (beer == null)
                {
                    continue;
                }

                bool isUpdate = false;

                if (webBeer.RatingScore > 0)
                {
                    beer.GlobalRatingScore = webBeer.RatingScore;
                    isUpdate = true;
                }
                if (webBeer.BeerIbu > 0)
                {
                    beer.IBU = webBeer.BeerIbu;
                    isUpdate = true;
                }
                if (!String.IsNullOrEmpty(webBeer.BeerDescription))
                {
                    beer.Description = webBeer.BeerDescription;
                    isUpdate         = true;
                }

                if (isUpdate)
                {
                    counter++;
                }
            }
            return(counter);
        }