コード例 #1
0
        public void Execute(IRuleEnvironment environment)
        {
            var result = environment.GetFact <RuleResult>("result");

            if (!result.Allow)
            {
                return;
            }
            TokenInfo tokenInfo = environment.GetFact <TokenInfo>("tokenInfo");

            if (tokenInfo.NoOfTimesCalledInLastHour >= hitLimit)
            {
                result.Allow   = false;
                result.Message = "X requests per hour reached.";
            }
        }
コード例 #2
0
        public void Execute(IRuleEnvironment environment)
        {
            var result = environment.GetFact <RuleResult>("result");

            if (!result.Allow)
            {
                return;
            }
            TokenInfo tokenInfo = environment.GetFact <TokenInfo>("tokenInfo");

            if (tokenInfo.Location.ToLower() != "us")
            {
                result.Allow   = false;
                result.Message = "Requests not from US.";
            }
        }
コード例 #3
0
        public void Execute(IRuleEnvironment environment)
        {
            var result = environment.GetFact <RuleResult>("result");

            if (!result.Allow)
            {
                return;
            }

            TokenInfo tokenInfo = environment.GetFact <TokenInfo>("tokenInfo");

            if (DateTime.Now < tokenInfo.LastRequestTime.Add(WaitTime))
            {
                result.Allow   = false;
                result.Message = $"A certain timespan {WaitTime} should pass since last call.";
            }
        }