public async Task <bool> IsActiveAsync(string featureName) { var active = false; var headerName = await _runtimeParameterAccessor .GetValueAsync <string>(featureName, _descriptors[0]); var percentage = await _runtimeParameterAccessor .GetValueAsync <double>(featureName, _descriptors[1]); if (headerName != null) { var headerValues = _httpContextAccessor.HttpContext.Request .Headers[headerName]; var value = headerValues[0] ?? DEFAULT_HEADER_VALUE; var assignedPartition = JenkinsPartitioner.ResolveToLogicalPartition(value, NUMBER_OF_PARTITIONS); return(assignedPartition <= ((NUMBER_OF_PARTITIONS * percentage) / 100)); } else { _logger.LogWarning($"The header name {_descriptors[0].Name} for feature {featureName} on RollupHeaderValueActivator is not configured correctly."); } return(active); }
public async Task <bool> IsActiveAsync(string featureName) { var percentage = await _runtimeParameterAccessor .GetValueAsync <double>(featureName, _descriptors[0]); var username = await _userProvider .GetUserNameAsync() ?? ANONYMOUS_USER; var assignedPartition = JenkinsPartitioner.ResolveToLogicalPartition(username, NUMBER_OF_PARTITIONS); return(assignedPartition <= ((NUMBER_OF_PARTITIONS * percentage) / 100)); }