public LimitGroup GetLimitGroup(int iLimitGroupId) { LimitConfgTable config = TryGetConfig <LimitConfgTable>(ConfigPath_LimitGroupConfig); LimitGroup result = null; config.LimitMap.TryGetValue(iLimitGroupId, out result); return(result); }
public void GetLimits_ReturnsUserLimitsFromRequestItems_IfFound() { var userLimits = new LimitGroup(); var request = new MockHttpRequest { Items = { [LimitRateAttribute.RequestItemName] = new Limits { User = userLimits } } }; var limits = limitProvider.GetLimits(request); limits.User.Should().Be(userLimits); }
public LimitProviderBase(ILimitKeyGenerator keyGenerator, IAppSettings appSettings) { keyGenerator.ThrowIfNull(nameof(keyGenerator)); appSettings.ThrowIfNull(nameof(appSettings)); this.keyGenerator = keyGenerator; this.appSettings = appSettings; // This is purely to ensure that we always have a default limit defaultLimits = new LimitGroup { Limits = new List<LimitPerSecond> { new LimitPerSecond { Seconds = 60, Limit = DefaultPerMinute }, new LimitPerSecond { Seconds = 3600, Limit = DefaultPerHour } } }; }
public LimitProviderBase(ILimitKeyGenerator keyGenerator, IAppSettings appSettings) { keyGenerator.ThrowIfNull(nameof(keyGenerator)); appSettings.ThrowIfNull(nameof(appSettings)); this.keyGenerator = keyGenerator; this.appSettings = appSettings; // This is purely to ensure that we always have a default limit defaultLimits = new LimitGroup { Limits = new List <LimitPerSecond> { new LimitPerSecond { Seconds = 60, Limit = DefaultPerMinute }, new LimitPerSecond { Seconds = 3600, Limit = DefaultPerHour } } }; }
public void GetLimits_ReturnsUserLimits_FromConfig(IEnumerable <string> userKeys, LimitGroup limitGroup) { var mockHttpRequest = new MockHttpRequest(); A.CallTo(() => keyGenerator.GetConfigKeysForUser(mockHttpRequest)) .Returns(userKeys); A.CallTo(() => appSetting.Get <LimitGroup>(userKeys.First())).Returns(limitGroup); var limits = limitProvider.GetLimits(mockHttpRequest); limits.User.Should().Be(limitGroup); }
//Limit Exec Func static public bool HandleLimitExec(HandleTarget Target, int iLimitGroupId, FuncContext context) { if (null == Target || 0 == iLimitGroupId) { return(true); } bool bResult = false; LimitGroup limitdataGroup = ConfigManager.Instance.GetLimitGroup(iLimitGroupId); if (null == limitdataGroup || null == limitdataGroup.LimitDataList) { return(bResult); } //Exec Limit LimitData ExecData; for (int iLoop = 0; iLoop < limitdataGroup.LimitDataList.Count; ++iLoop) { ExecData = limitdataGroup.LimitDataList[iLoop]; if (null == ExecData) { continue; } LimitMethodsBase handler = null; if (!LimitExec.TryGetValue(ExecData.Id, out handler)) { Debug.LogError("limitId:" + ExecData.Id + " is not found."); return(false); } if (0 == limitdataGroup.Logic) { // Or-logic bResult = handler.LimitExecHandler(Target, ExecData, context); if (true == bResult) { break; } } else if (1 == limitdataGroup.Logic) { // And-logic bResult = handler.LimitExecHandler(Target, ExecData, context); if (false == bResult) { break; } } else { Debug.LogWarning("The limitdataGroup's logic is error!"); break; } } return(bResult); }
public void GetLimits_ReturnsRequestLimits_FromConfig(IEnumerable<string> requestKeys, LimitGroup limitGroup) { var mockHttpRequest = new MockHttpRequest(); A.CallTo(() => keyGenerator.GetConfigKeysForRequest(mockHttpRequest)) .Returns(requestKeys); A.CallTo(() => appSetting.Get<LimitGroup>(requestKeys.First())).Returns(limitGroup); var limits = limitProvider.GetLimits(mockHttpRequest); limits.Request.Should().Be(limitGroup); }