protected override async Task Execute() { var token = CancellationTokenSource.Token; HttpClient client = new HttpClient(); await Task.Factory.StartNew(async() => { while (!token.IsCancellationRequested) { var content = await client.GetAsync(_url, token); if (content.IsSuccessStatusCode) { IntelItem intelItem = new IntelItem(); var value = await content.Content.ReadAsStringAsync(token); if (IntelItems.IsEmpty || content.Headers.Date < DateTime.Now) { intelItem.Content = value; IntelItems.Enqueue(intelItem); ProcessItemAdded(intelItem); } } } }, token); }
protected override async Task Execute() { var token = CancellationTokenSource.Token; var reader = new FeedReader(); using HttpClient vClient = new HttpClient(); var http = await vClient.GetAsync(_rssSource.Url, token); if (http.IsSuccessStatusCode) { await Task.Factory.StartNew(() => { try { var items = reader.RetrieveFeed(_rssSource.Url); foreach (var i in items) { if ((keys != null && (i.Content != null && keys.Any(t => i.Content.Contains(t))) || keys?.Count == 0)) { var keywords = _catalog.GetKeywords(_rssSource.LanguageSource.Description, i.Summary); IntelItem intelItem = new IntelItem { Url = _rssSource.Url, Content = i.GetSummary(), Description = i.Title, DateTimeCollected = i.LastUpdatedDate.DateTime, Remarks = i?.Categories?.FirstOrDefault() }; intelItem.Keywords.AddRange(i.Categories); intelItem.Keywords.AddRange(keywords); intelItem.SourceCountry = _rssSource.SourceCountry; intelItem.LevelTrustable = _rssSource.Trustable; intelItem.LanguageIntel = _rssSource.LanguageSource; intelItem.CovertArea = _rssSource.CovertArea; intelItem.Type = _rssSource.Type; ProcessItemAdded(intelItem); } } ProcessCompleted(); } catch (Exception e) { _logger.Error(e.Message); } }, token); } else { _logger.Warn("bad url " + _rssSource.Url); } }
protected void ProcessItemAdded(IntelItem intelItem) { IntelItems.Enqueue(intelItem); AddedItem?.Invoke(this, intelItem); }