private List<IDeal> ParseGraphContent(TwitchGraphContent content) { List<IDeal> deals = new List<IDeal>(); foreach (PrimeOffer offer in content.Data.PrimeOffers) { if (offer.DeliveryMethod != "DIRECT_ENTITLEMENT") continue; if (offer.Tags.Count == 0) continue; if (offer.Tags.All(x => x.TagTag != "FGWP")) continue; deals.Add(new Deal { Discount = 100, Image = GetImageUrl(offer), Link = "https://gaming.amazon.com/home", Title = offer.Title, Start = offer.StartTime.UtcDateTime, End = offer.EndTime.UtcDateTime }); } return deals; }
async Task<IEnumerable<IDeal>> IScraper.Scrape(CancellationToken token) { restClient = new RestClient("https://twitch.amazon.com"); restClient.CookieContainer = cookieContainer = new CookieContainer(); string csrfToken = await GetCSRFToken(token); if (token.IsCancellationRequested) return default; string content = await GetContent(csrfToken, token); TwitchGraphContent twitchGraphContent = JsonConvert.DeserializeObject<TwitchGraphContent>(content); List<IDeal> deals = ParseGraphContent(twitchGraphContent); return deals; }