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));
        }
Пример #3
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));
        }
Пример #4
0
        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));
        }
Пример #5
0
        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;
            }
        }
Пример #6
0
        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;
            }
        }
Пример #7
0
        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;
            }
        }
Пример #8
0
        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);
        }