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); }