Example #1
0
        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);
        }
Example #2
0
        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);
 }