Example #1
0
        public static List <RuleModel> Match(string url)
        {
            url = url.Trim().ToLower();
            var domain = new Uri(url).GetDomain();

            using (var db = new LiteDatabase(@"Rules.db"))
            {
                var col   = db.GetCollection <RuleModel>("rules");
                var rules = col.Find(Query.Where("Domain", m => m.AsString == domain)).ToList();
                var masks = rules.Select(m => m.Expression).ToArray();

                var mask = Wildcard.MaxMatch(url, masks);
                return(rules.Where(m => m.Expression == mask).ToList());
            }
        }