Exemplo n.º 1
0
        public async Task <PagedPostCollection> GetPagedPostsAsync(int page, int postsPerPage)
        {
            PostsResponse <PostContent>?postsResponses;

            try
            {
                var queryBuilder = new GhostQueryBuilder <PostContent>()
                                   .Limit(postsPerPage)
                                   .Page(page + 1)
                                   .OrderByDescending(m => m.PublishedAt);
                postsResponses = await _client.GetPostsAsync(queryBuilder);
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Failed to fetch from Ghost");
                postsResponses = null;
            }

            if (postsResponses?.Posts == null)
            {
                return(PagedPostCollection.Empty(postsPerPage));
            }

            return(Utils.ToPagedPostCollection(postsResponses));
        }
Exemplo n.º 2
0
        public async Task <PostsResponse <T>?> GetPostsAsync <T>(GhostQueryBuilder <T> queryBuilder)
        {
            queryBuilder = queryBuilder.ApiKey(_contentApiKey);
            var endpoint = $"{_postsEndpoint}/{queryBuilder.Build()}";
            var response = await _httpClient.GetAsync(endpoint);

            CheckStatusCode(response.StatusCode);

            try
            {
                return(await response.Content.ReadFromJsonAsync <PostsResponse <T> >());
            }
            catch (JsonException e)
            {
                throw new InvalidOperationException("The response body was unknown format", e);
            }
        }
Exemplo n.º 3
0
        public async Task <BlogPost?> GetPostAsync(string slug)
        {
            PostsResponse <PostContent>?postsResponses;

            try
            {
                var queryBuilder = new GhostQueryBuilder <PostContent>()
                                   .Slug(slug);
                postsResponses = await _client.GetPostsAsync(queryBuilder);
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Failed to fetch from Ghost");
                postsResponses = null;
            }

            return(postsResponses?.Posts?.FirstOrDefault()?.ToBlogPost());
        }