public async Task <IActionResult> HackerNewsArticles([FromQuery] int pageIndex, [FromQuery] int pageSize, string filter)
        {
            _memoryCache.TryGetValue("values", out string stringEntry);
            var cacheEntry = string.IsNullOrEmpty(stringEntry) ? null : JsonConvert.DeserializeObject <List <Item> >(stringEntry);
            var results    = await _service.ReconcileArticleIdsAsync(cacheEntry ?? new List <Item>());

            _memoryCache.Set("values", JsonConvert.SerializeObject(results));
            var itemsAfterFilter = await _service.FilterItemsAsync(results.ToList(), filter);

            if (itemsAfterFilter == null)
            {
                return(NoContent());
            }

            return(Ok(new ItemResults
            {
                Items = itemsAfterFilter
                        .Skip(pageSize * pageIndex)
                        .Take(pageSize),
                TotalCount = itemsAfterFilter?.Count() ?? 0
            }));
        }