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)); }
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); } }
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()); }