Esempio n. 1
0
        public NewsApiService(NewsApiConfig newsApiConfig)
        {
            this.newsApiConfig = newsApiConfig;

            this.Client        = new HttpClient();
            Client.BaseAddress = new Uri(newsApiConfig.BaseUri);
            Client.DefaultRequestHeaders.Add("Accept", "application/json");
            Client.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");
        }
        public async Task <News.NewsApiArticles> FetchArticlesData(NewsSearchableFields newsSearchableFields)
        {
            var lan = string.IsNullOrEmpty(newsSearchableFields.language) ? NewsApiService.NewsLanguages.en : (NewsApiService.NewsLanguages)Enum.Parse(typeof(NewsApiService.NewsLanguages), newsSearchableFields.language);
            var cfg = new NewsApiConfig(this._configuration);

            using (var ns = new News.NewsApiService(cfg))
            {
                return(await ns.GetEverything(newsSearchableFields.source, DateTime.Today, null, newsSearchableFields.keyWord, newsSearchableFields.keyWordInTitle, newsSearchableFields.sortBy, newsSearchableFields.pageIndex, newsSearchableFields.pageSize, lan));
            }
        }
        public async Task <News.NewsApiSources> FetchSourcesData(string category, string language, string country)
        {
            var lan   = (NewsApiService.NewsLanguages)Enum.Parse(typeof(NewsApiService.NewsLanguages), language);
            var count = (NewsApiService.Countries)Enum.Parse(typeof(NewsApiService.Countries), country);

            NewsApiSources v;
            var            cfg = new NewsApiConfig(this._configuration);

            using (var ns = new News.NewsApiService(cfg))
            {
                return(await ns.GetSources(category, lan, count));
            }
        }
Esempio n. 4
0
        public async Task <IEnumerable <WeatherForecast> > Get()
        {
            var cfg = new NewsApiConfig(this._configuration);
            var svc = new NewsApiService(cfg);
            var max = await svc.GetMaxItem();

            var rng = new Random();

            return(Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = rng.Next(-20, 55),
                Summary = Summaries[rng.Next(Summaries.Length)]
            })
                   .ToArray());
        }
        public async Task <NewsApiItems> GetAsync_new(int pageNumber = 0, int storyNumber = 0, bool increment = false)
        {
            var startTime      = DateTime.Now;
            var maxStoryNumber = await this.Service.GetMaxItem();

            if (storyNumber == 0 || pageNumber == 0)
            {
                storyNumber = maxStoryNumber;
                increment   = true;
                pageNumber  = 0;
            }
            else
            {
                storyNumber = increment ? storyNumber - 1 : storyNumber + 1;    //do not grab the story passed
            }
            var pageSize       = new NewsApiConfig(this._configuration).PageSize;
            var items          = new List <NewsItem>();
            var i              = 0;
            var itemsFetched   = 0;
            var storiesCounter = 0;

            do
            {
                var tasks = new List <Task <NewsItem> >();
                for (int p = 0; p < pageSize; p++)
                {
                    var item = this.GetDetail(storyNumber);
                    storyNumber = increment ? storyNumber - 1 : storyNumber + 1;
                    tasks.Add(item);
                }

                foreach (var task in tasks)
                {
                    var v = await task;
                    itemsFetched++;
                    try
                    {
                        if (v != null && v.type == StoryTypes.story.ToString())
                        {
                            storiesCounter++;
                            items.Add(v);
                            i++;
                        }
                    }
                    catch (Exception ex)
                    {
                        //for some reason the newer stories are somehow malformed, need to add the try catch
                        //throw;
                    }
                }
            }while (i < pageSize);

            var diffTime = DateTime.Now.Subtract(startTime);

            return(new NewsApiItems()
            {
                Stories = items.OrderByDescending(t => t.id).ToList(),
                TotalItemsProcessed = itemsFetched,
                PageNumber = pageNumber,
                //LastStoryNumber = items.Last().id,
                message = $"Note: Processed {itemsFetched} items in {diffTime.TotalSeconds} sec., {items.Count} of those items were stories"
            });
        }