public static DataRetrievalResult TryGetData(EventData eventData, EventMetadata metricMetadata, out MetricData metric) { Requires.NotNull(eventData, nameof(eventData)); Requires.NotNull(metricMetadata, nameof(metricMetadata)); metric = null; string metricName = metricMetadata[MetricNameMoniker]; if (string.IsNullOrEmpty(metricName)) { return(DataRetrievalResult.MissingMetadataProperty(MetricNameMoniker)); } double value = 0.0; string metricValueProperty = metricMetadata[MetricValuePropertyMoniker]; if (string.IsNullOrEmpty(metricValueProperty)) { string rawValue = metricMetadata[MetricValueMoniker]; if (string.IsNullOrEmpty(rawValue)) { return(DataRetrievalResult.MissingMetadataProperty(MetricValueMoniker)); } if (!double.TryParse(rawValue, out value)) { return(DataRetrievalResult.InvalidMetadataPropertyValue(MetricValueMoniker, rawValue)); } } else { if (!eventData.GetValueFromPayload <double>(metricValueProperty, (v) => value = v)) { return(DataRetrievalResult.DataMissingOrInvalid(metricValueProperty)); } } metric = new MetricData(); metric.MetricName = metricName; metric.Value = value; return(DataRetrievalResult.Success()); }
public static DataRetrievalResult TryGetData( EventData eventData, EventMetadata requestMetadata, out RequestData request) { Requires.NotNull(eventData, nameof(eventData)); Requires.NotNull(requestMetadata, nameof(requestMetadata)); request = null; string requestNameProperty = requestMetadata[RequestNamePropertyMoniker]; if (string.IsNullOrWhiteSpace(requestNameProperty)) { return(DataRetrievalResult.MissingMetadataProperty(RequestNamePropertyMoniker)); } string requestName = null; if (!eventData.GetValueFromPayload <string>(requestNameProperty, (v) => requestName = v)) { return(DataRetrievalResult.DataMissingOrInvalid(requestNameProperty)); } bool? success = null; string isSuccessProperty = requestMetadata[IsSuccessPropertyMoniker]; if (!string.IsNullOrWhiteSpace(isSuccessProperty)) { if (!eventData.GetValueFromPayload <bool>(isSuccessProperty, (v) => success = v)) { return(DataRetrievalResult.DataMissingOrInvalid(isSuccessProperty)); } } TimeSpan?duration = null; string durationProperty = requestMetadata[DurationPropertyMoniker]; if (!string.IsNullOrWhiteSpace(durationProperty)) { DurationUnit durationUnit; string durationUnitOverride = requestMetadata[DurationUnitMoniker]; if (string.IsNullOrEmpty(durationUnitOverride) || !Enum.TryParse <DurationUnit>(durationUnitOverride, ignoreCase: true, result: out durationUnit)) { // By default we assume duration is stored as a double value representing milliseconds durationUnit = DurationUnit.Milliseconds; } if (durationUnit != DurationUnit.TimeSpan) { double tempDuration = 0.0; if (!eventData.GetValueFromPayload <double>(durationProperty, (v) => tempDuration = v)) { return(DataRetrievalResult.DataMissingOrInvalid(durationProperty)); } duration = ToTimeSpan(tempDuration, durationUnit); } else { if (!eventData.GetValueFromPayload <TimeSpan>(durationProperty, (v) => duration = v)) { return(DataRetrievalResult.DataMissingOrInvalid(durationProperty)); } } } string responseCode = null; string responseCodeProperty = requestMetadata[ResponseCodePropertyMoniker]; if (!string.IsNullOrWhiteSpace(responseCodeProperty)) { if (!eventData.GetValueFromPayload <string>(responseCodeProperty, (v) => responseCode = v)) { return(DataRetrievalResult.DataMissingOrInvalid(responseCodeProperty)); } } request = new RequestData(); request.RequestName = requestName; request.IsSuccess = success; request.Duration = duration; request.ResponseCode = responseCode; return(DataRetrievalResult.Success()); }