public async Task Get_Posts_By_Tag() { var request = new BlogPostRequestDto(order: "-sys.createdAt", filterValue: "3ZbGNsHyNiWMGs0eC6g6yc"); var blogs = await contentfulService.GetPostsByTag(request); Assert.That(blogs.items, Is.LessThan(blogs.total)); }
public async Task Get_Posts_By_Year() { var request = new BlogPostRequestDto(order: "-sys.createdAt", filterValue: "2018"); var blogs = await contentfulService.GetPostsByYear(request); Assert.That(blogs.items, Is.GreaterThan(0)); }
public async Task <IActionResult> GetPosts(string page) { var request = new BlogPostRequestDto( currentPage: page.IsNumeric() ? page.ToInt() : 1, limit: Posts_Per_Page); var userDto = await _contentfulService.GetRecentPosts(request); return(Ok(userDto)); }
public async Task <IActionResult> GetByYear(string year, string page) { var request = new BlogPostRequestDto( currentPage: page.IsNumeric() ? page.ToInt() : 1, filterValue: year, limit: Posts_Per_Page); var blogDto = await _contentfulService.GetPostsByYear(request); return(Ok(blogDto)); }
public async Task <PostDto> GetRecentPosts(BlogPostRequestDto request) { try { var url = FormatUrl(request); var res = await _client.GetAsync(url); res.EnsureSuccessStatusCode(); return(await res.Content.ReadAsAsync <PostDto>(formatters)); } catch (HttpRequestException ex) { _log.Error(ex, $"An error occurred getting blogs {ex.ToString()}"); throw; } }
public async Task <PostDto> GetPostsByTag(BlogPostRequestDto request) { try { var url = FormatUrl(request).Add($"&links_to_entry={request.FilterValue}"); var res = await _client.GetAsync(url); res.EnsureSuccessStatusCode(); return(await res.Content.ReadAsAsync <PostDto>(formatters)); } catch (HttpRequestException ex) { _log.Error(ex, $"An error occurred {ex.ToString()}"); throw; } }
public async Task <PostDto> GetPostsByYear(BlogPostRequestDto request) { try { var url = FormatUrl(request) + $"&sys.createdAt[gte]={request.FilterValue}-01-01T00:00:00Z" + $"&sys.createdAt[lte]={request.FilterValue}-12-31T23:59:59Z"; var res = await _client.GetAsync(url); res.EnsureSuccessStatusCode(); return(await res.Content.ReadAsAsync <PostDto>(formatters)); } catch (HttpRequestException ex) { _log.Error(ex, $"An error occurred {ex.ToString()}"); throw; } }
private string FormatUrl(BlogPostRequestDto request) { var queryString = $"{request.Endpoint}?access_token={configuration.ContentfulDeliveryApiKey}" + $"&content_type={request.ContentType}" + $"&select={request.Fields}" + $"&order={request.Order}" + $"&include={request.Include}"; if (request.CurrentPage > 1 && request.Limit.IsNumeric()) { var postsToSkip = (request.CurrentPage - 1) * request.Limit.ToInt(); queryString = queryString.Add($"&skip={postsToSkip.ToString()}"); } if (request.Limit != "0") { queryString = queryString.Add($"&limit={request.Limit}"); } return(queryString); }