public async Task <int> Handle(AddRssSourseCommand request, CancellationToken cancellationToken)
        {
            var rssSourseDto = new RssSourceDto
            {
                Id              = request.Id,
                Name            = request.Name,
                Url             = request.Url,
                DateOfReceiving = DateTime.Now
            };

            var rssSourseEnt = _mapper.Map <RssSource>(rssSourseDto);

            await _dbContext.RssSource.AddAsync(rssSourseEnt, cancellationToken);

            return(await _dbContext.SaveChangesAsync(cancellationToken));//метод возвращает количество измененных записей
        }
예제 #2
0
        public async Task <IEnumerable <NewsDto> > GetNewsFromRssSource(RssSourceDto rssSource)
        {
            var newsList = new List <NewsDto>();

            using (var reader = XmlReader.Create(rssSource.Url))
            {
                var feed = SyndicationFeed.Load(reader);
                reader.Close();

                var feedUrls        = feed.Items.Select(i => i.Id).ToList();
                var currentNewsUrls = await _unitOfWork.News
                                      .FindBy(news => news.RssSourceId == rssSource.Id)
                                      .ToListAsync();

                Log.Information($"News count in DB: {currentNewsUrls.Count}");

                foreach (var feedItem in feed.Items)
                {
                    if (!currentNewsUrls.Any(news => news.Url.Equals(feedItem.Id)))
                    {
                        var newsDto = new NewsDto()
                        {
                            Id          = Guid.NewGuid(),
                            RssSourceId = rssSource.Id,
                            Url         = feedItem.Id,
                            Title       = feedItem.Title.Text,
                            Summary     = SyndicationHelper.GetSyndicationItemSummary(feedItem),
                            NewsDate    = feedItem.PublishDate.UtcDateTime,
                            DateCollect = DateTime.UtcNow
                        };
                        newsList.Add(newsDto);
                    }
                }
            }
            return(newsList);
        }
예제 #3
0
 public async Task <IEnumerable <NewsDto> > GetNewsFromRssSource(RssSourceDto rssSource)
 {
     throw new NotImplementedException();
 }