public async Task <Listing> GetMoreOnListing(More more, string contentId, string subreddit, CancellationToken token, IProgress <float> progress) { var targetUri = _networkLayer.RedditBaseUrl + "/api/morechildren.json"; if (more.Children.Count == 0) { return new Listing { Kind = "Listing", Data = new ListingData() } } ; var viableChildren = more.Children.Take(20); var leftovers = more.Children.Skip(20); var arguments = new Dictionary <string, string> { { "children", string.Join(",", viableChildren) }, { "link_id", contentId.Contains("_") ? contentId : "t3_" + contentId }, { "pv_hex", "" }, { "api_type", "json" } }; if (subreddit != null) { arguments.Add("r", subreddit); } getMoreCount++; var resultString = await _networkLayer.Post(targetUri, token, arguments, progress); var newListing = new Listing { Kind = "Listing", Data = new ListingData { Children = await Task.Run(() => JsonConvert.DeserializeObject <JsonThing>(resultString).Json.Data.Things) } }; if (leftovers.Count() > 0) { newListing.Data.Children.Add(new Thing { Kind = "more", Data = new More { Children = new List <string>(leftovers), ParentId = more.ParentId, Count = (more.Count - viableChildren.Count()) } }); } if (getMoreCount != 0) { return(newListing); } else { return(newListing); } }
public async Task <Listing> GetMoreOnListing(More more, string contentId, string subreddit) { var targetUri = "http://www.reddit.com/api/morechildren.json"; if (more.Children.Count == 0) { return new Listing { Kind = "Listing", Data = new ListingData() } } ; var viableChildren = more.Children.Take(20); var leftovers = more.Children.Skip(20); var arguments = new Dictionary <string, string> { { "children", string.Join(",", viableChildren) }, { "link_id", contentId.Contains("_") ? contentId : "t3_" + contentId }, { "pv_hex", "" }, { "api_type", "json" } }; if (subreddit != null) { arguments.Add("r", subreddit); } getMoreCount++; await ThrottleRequests(); await EnsureRedditCookie(); var result = await _httpClient.PostAsync(targetUri, new FormUrlEncodedContent(arguments)); var resultString = await result.Content.ReadAsStringAsync(); var newListing = new Listing { Kind = "Listing", Data = new ListingData { Children = JsonConvert.DeserializeObject <JsonThing>(resultString).Json.Data.Things } }; if (leftovers.Count() > 0) { newListing.Data.Children.Add(new Thing { Kind = "more", Data = new More { Children = new List <string>(leftovers), ParentId = more.ParentId, Count = (more.Count - viableChildren.Count()) } }); } if (getMoreCount != 0) { return(newListing); } else { return(newListing); } }