private void Fill(RssCrawler rssCrawler) { var dataFilters = _rssCrawlerFilterGateway.SelectByRssCrawler(rssCrawler.RssCrawlerId); var filters = Mapper.Map <ICollection <RssCrawlerFilter> >(dataFilters); rssCrawler.Filters = filters; //rssCrawler.ExcludeItems = //TODO if (rssCrawler.TargetCategoryId != null) { var cat = _categoryGateway.SelectOne(rssCrawler.TargetCategoryId.Value); rssCrawler.TargetCategory = new IdNamePair <int>(cat.CategoryId, cat.Name); } }
public TestChannelResponse TestChannel(IDbConnection connection, TestChannelRequest request) { try { request.CheckNotNull(); if (!StringUtils.IsUrl(request.FeedUrl)) { throw new Exception($"Url '{request.FeedUrl}' is invalid"); } var feed = RssCrawler.GetFeedsFromChannel(request.FeedUrl, null, false, out RssCrawlerEngine usedEngine, out Exception fetchError); if (feed == null || feed.Items == null || feed.Items.Count == 0) { if (fetchError != null) { ErrorStore.LogExceptionWithoutContext(fetchError, false, false, new Dictionary <string, string> { { "channelId", request.FeedUrl }, { "engine", usedEngine.ToString() } }); } throw new Exception("Cannot fetch data"); } else { return(new TestChannelResponse { Entities = feed.Items.Select(x => new MyRow { Title = x.Title, Link = x.Link, Description = x.Description }).ToList(), Engine = usedEngine.ToString() }); } } catch (Exception ex) { throw new Exception("Hi, we have an error: " + ex?.Message ?? string.Empty); } }