public async Task <List <Post> > GetAllPosts(string alias, SortOrder sortOrder = SortOrder.Descending) { List <Post> allPosts = new List <Post>(); // Initial pull - get first 10 posts from page 1 HttpResponseMessage response = await _httpClient.GetAsync(string.Format(ApiCollectionsPostQueryString, alias, "1")); if (response.IsSuccessStatusCode) { string responseBody = await response.Content.ReadAsStringAsync(); WriteAsCollectionResponse writeAsResponse = JsonSerializer.Deserialize <WriteAsCollectionResponse>(responseBody, _jsonSerializerOptions); if (writeAsResponse != null && writeAsResponse.Data != null) { allPosts.AddRange(writeAsResponse.Data.Posts); // If there are more posts, get the rest if (writeAsResponse.Data.TotalNumberOfPosts > writeAsResponse.Data.Posts.Count) { int totalNumberOfPages = GetTotalNumberOfPages(writeAsResponse.Data.TotalNumberOfPosts); for (int i = 2; i <= totalNumberOfPages; i++) { List <Post> posts = await GetPostsByPageNumber(alias, i); allPosts.AddRange(posts); } } } } allPosts = SortPosts(sortOrder, allPosts); return(allPosts); }
public async Task <List <Post> > GetPostsByPageNumber(string alias, int pageNumber, SortOrder sortOrder = SortOrder.Descending) { List <Post> posts = new List <Post>(); HttpResponseMessage response = await _httpClient.GetAsync(string.Format(ApiCollectionsPostQueryString, alias, pageNumber.ToString())); if (response.IsSuccessStatusCode) { string responseBody = await response.Content.ReadAsStringAsync(); WriteAsCollectionResponse writeAsResponse = JsonSerializer.Deserialize <WriteAsCollectionResponse>(responseBody, _jsonSerializerOptions); if (writeAsResponse != null && writeAsResponse.Data != null) { posts.AddRange(writeAsResponse.Data.Posts); } } posts = SortPosts(sortOrder, posts); return(posts); }