示例#1
0
        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);
        }
示例#2
0
        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);
        }