public bool Equals(RequestMatchRules other)
 {
     return(other != null &&
            UrlRules.Count() == other.UrlRules.Count() && !UrlRules.Except(other.UrlRules).Any() &&
            HeaderRules.Count() == other.HeaderRules.Count() && !HeaderRules.Except(other.HeaderRules).Any() &&
            QueryRules.Count() == other.QueryRules.Count() && !QueryRules.Except(other.QueryRules).Any() &&
            BodyRules.Count() == other.BodyRules.Count() && other.BodyRules.All(br1 => BodyRules.Any(br2 => br1.Equals(br2))));
 }
        private QueryRules CreateQueryRules(string field, string value)
        {
            var queryRule = new QueryRules();

            queryRule.Field        = field;
            queryRule.ObjectType   = LogObjectType.none;
            queryRule.PropertyType = LogPropertyType.none;
            queryRule.Operator     = "=";
            queryRule.Value        = value;
            return(queryRule);
        }
示例#3
0
        public FilterDefinition <Log> BuildFilter(QueryRules rule)
        {
            dynamic value = GetValueByPropertyType(rule);

            switch (rule.ObjectType)
            {
            case LogObjectType.jarray:
                var arrFilter = ItemsOperators.SingleOrDefault(option => option.Key == rule.Operator);
                return(arrFilter.Value(rule.Field, value));

            default:
                var filter = ItemOperators.SingleOrDefault(option => option.Key == rule.Operator);
                return(filter.Value(rule.Field, value));
            }
        }
示例#4
0
        private dynamic GetValueByPropertyType(QueryRules rule)
        {
            switch (rule.PropertyType)
            {
            case LogPropertyType.number:
                return(Int32.Parse(rule.Value));

            case LogPropertyType.date:
                var date = DateTime.Parse(rule.Value);
                return(date);

            default:
                return(rule.Value);
            }
        }