Example #1
0
        public DomainRating GetDomainRating(string domain)
        {
            DomainRating rating = _domainRatings.FirstOrDefault(dr => dr.Domain == domain);

            if (rating == null)
            {
                rating = QueryDomainRating(domain);

                _domainRatings.Add(rating);
                SaveDomainRatings(_kvs);
            }
            else if (DateTime.Now - rating.LastChecked > TimeSpan.FromDays(31))
            {
                DomainRating tempRating = QueryDomainRating(domain);
                _domainRatings.Remove(rating);
                _domainRatings.Add(tempRating);
                SaveDomainRatings(_kvs);
                rating = tempRating;
            }

            return(rating);
        }
        public bool AllowArticle(NewsArticle newsArticle, string searchTerm, KeyValueStorage storage)
        {
            Uri    uri    = new Uri(newsArticle.Url);
            string domain = String.Join(".", TakeLast(uri.Host.Split('.'),
                                                      IsThreePartDomain(uri.Host) ? 3 : 2));

            InitializeDomainRater(storage);

            int minimumMonthlyVisitors = storage.GetInteger(
                DomainRatingNewsFilterSettingsPage.MinimumMonthlyVisitorsKey);

            if (minimumMonthlyVisitors <= 0)
            {
                return(true);
            }

            DomainRating rating = _domainRater.GetDomainRating(domain);

            if (rating.Decision == DomainRatingDecision.Whitelisted)
            {
                return(true);
            }
            else if (rating.Decision == DomainRatingDecision.Blacklisted)
            {
                return(false);
            }

            bool allow = rating.MonthlyVisitors >= minimumMonthlyVisitors;

            if (!allow)
            {
                System.Diagnostics.Debug.WriteLine("Not allowing domain " +
                                                   domain + " " + rating);
            }
            return(allow);
        }