Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }