/// <summary>
        /// Returns a collection of the latest articles
        /// </summary>
        public GetMostRecentArticlesResponse GetMostRecentArticles(GetMostRecentArticlesRequest request)
        {
            var apiClient = new WebApiClient(new Uri(Connection.BaseUrl));

            var taskGetIds = apiClient.Get <List <int> >("newstories.json");
            var dataIds    = taskGetIds.Result;

            if (request.ArticleCount > 0)
            {
                dataIds = dataIds.Take(request.ArticleCount).ToList();
            }

            var articles = new List <Article>();

            foreach (var id in dataIds)
            {
                var taskGetItem = apiClient.Get <HackerNewsItem>($"item/{id}.json");
                var item        = taskGetItem.Result;
                var article     = new Article
                {
                    Headline = item.Title,
                    Url      = item.Url
                };
                articles.Add(article);
            }

            return(new GetMostRecentArticlesResponse
            {
                Articles = articles
            });
        }
Exemple #2
0
        public void GetMostRecentArticlesTest()
        {
            var conn    = new WebApiConnection("https://hacker-news.firebaseio.com/v0/");
            var client  = new HackerNewsClient(conn);
            var request = new GetMostRecentArticlesRequest
            {
                ArticleCount = 20
            };

            var response = client.GetMostRecentArticles(request);

            response.Articles.Count.ShouldBe(20);
        }
        public IEnumerable <Article> Get(int source)
        {
            var factory = new NewsClientFactory(_configuration);
            var client  = factory.GetClient((NewsClientSource)source);

            var request = new GetMostRecentArticlesRequest
            {
                ArticleCount = int.Parse(_configuration["ArticleCount"])
            };

            var response = client.GetMostRecentArticles(request);

            return(response.Articles);
        }