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)); } }
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" }); }