Esempio n. 1
0
        public bool FiltersMatched(List <IRateLimiterFilter> targetFilters, EnumFilterMatchMode matchMode = EnumFilterMatchMode.Any)
        {
            // check case when targetFilters are null or Rule Filters are null
            if (targetFilters == null)
            {
                return(Filters == null);
            }
            else if (Filters == null)
            {
                return(true);
            }
            int countMatchedFilters = 0;

            foreach (var targetFilter in targetFilters)
            {
                bool filterMatched = isMatched(targetFilter);
                if (filterMatched)
                {
                    if (matchMode == EnumFilterMatchMode.Any)
                    {
                        return(true);
                    }
                    else if (matchMode == EnumFilterMatchMode.All)
                    {
                        countMatchedFilters++;
                    }
                }
            }

            if (matchMode == EnumFilterMatchMode.All && countMatchedFilters == targetFilters.Count)
            {
                return(true);
            }

            return(false);
        }
Esempio n. 2
0
        public bool ValidateRule(int userId, int requestId, RateLimiterRule rule, List <IRateLimiterFilter> targetFilters, EnumFilterMatchMode filterMatchMode = EnumFilterMatchMode.Any)
        {
            if (rule == null)
            {
                return(true);
            }

            if (rule.FiltersMatched(targetFilters, filterMatchMode))
            {
                return(rule.Strategy.IsAllowed(userId, requestId));
            }

            return(false);
        }
Esempio n. 3
0
        public bool ValidateRuleList(int userId, int requestId, List <RateLimiterRule> rules, List <IRateLimiterFilter> targetFilters, EnumFilterMatchMode filterMatchMode = EnumFilterMatchMode.Any)
        {
            if (rules == null)
            {
                return(true);
            }

            foreach (var rule in rules)
            {
                return(ValidateRule(userId, requestId, rule, targetFilters, filterMatchMode));
            }

            return(false);
        }