private List <SamplingRule> UnmarshallSamplingRuleResponse(string responseContent) { List <SamplingRule> samplingRules = new List <SamplingRule>(); var samplingRuleResponse = JsonMapper.ToObject <SamplingRuleResponseModel>(responseContent); foreach (var samplingRuleRecord in samplingRuleResponse.SamplingRuleRecords) { var samplingRuleModel = samplingRuleRecord.SamplingRule; if (samplingRuleModel.Version.GetValueOrDefault() == Version && SamplingRule.IsValid(samplingRuleModel)) { var samplingRule = new SamplingRule ( samplingRuleModel.RuleName, samplingRuleModel.Priority.GetValueOrDefault(), samplingRuleModel.FixedRate.GetValueOrDefault(), samplingRuleModel.ReservoirSize.GetValueOrDefault(), samplingRuleModel.Host, samplingRuleModel.ServiceName, samplingRuleModel.HTTPMethod, samplingRuleModel.URLPath, samplingRuleModel.ServiceType, samplingRuleModel.ResourceARN, samplingRuleModel.Attributes ); samplingRules.Add(samplingRule); } } return(samplingRules); }
/// <summary> /// Use X-Ray client to get the sampling rules /// from X-Ray service.The call is proxied and signed by X-Ray Daemon. /// </summary> /// <returns></returns> public async Task <GetSamplingRulesResponse> GetSamplingRules() { List <SamplingRule> newRules = new List <SamplingRule>(); GetSamplingRulesRequest request = new GetSamplingRulesRequest(); Task <Model.GetSamplingRulesResponse> responseTask; lock (_xrayClientLock) { RefreshEndPoint(); responseTask = _xrayClient.GetSamplingRulesAsync(request); } var response = await responseTask; foreach (var record in response.SamplingRuleRecords) { var rule = record.SamplingRule; if (rule.Version == Version && SamplingRule.IsValid(rule)) // We currently only handle v1 sampling rules. { var sampleRule = new SamplingRule(rule.RuleName, rule.Priority, rule.FixedRate, rule.ReservoirSize, rule.Host, rule.ServiceName, rule.HTTPMethod, rule.URLPath, rule.ServiceType, rule.ResourceARN, rule.Attributes); newRules.Add(sampleRule); } } GetSamplingRulesResponse result = new GetSamplingRulesResponse(newRules); return(result); }