in sdk/src/Handlers/AwsSdk/Internal/XRayPipelineHandler.cs [468:536]
private void AddRequestSpecificInformation(string serviceName, string operation, AmazonWebServiceRequest request, IDictionary<string, object> aws)
{
if (serviceName == null)
{
throw new ArgumentNullException(nameof(serviceName));
}
if (operation == null)
{
throw new ArgumentNullException(nameof(operation));
}
if (request == null)
{
throw new ArgumentNullException(nameof(request));
}
if (aws == null)
{
throw new ArgumentNullException(nameof(aws));
}
if (AWSServiceHandlerManifest == null)
{
_logger.DebugFormat("AWSServiceHandlerManifest doesn't exist.");
return;
}
if (!AWSServiceHandlerManifest.Services.TryGetValue(serviceName, out AWSServiceHandler serviceHandler))
{
_logger.DebugFormat("Service name doesn't exist in AWSServiceHandlerManifest: serviceName = {0}.", serviceName);
return;
}
if (!serviceHandler.Operations.TryGetValue(operation, out AWSOperationHandler operationHandler))
{
_logger.DebugFormat("Operation doesn't exist in AwsServiceInfo: serviceName = {0}, operation = {1}.", serviceName, operation);
return;
}
if (operationHandler.RequestParameters != null)
{
foreach (string parameter in operationHandler.RequestParameters)
{
if (TryReadPropertyValue(request, parameter, out object propertyValue))
{
aws[parameter.FromCamelCaseToSnakeCase()] = propertyValue;
}
}
}
if (operationHandler.RequestDescriptors != null)
{
foreach (KeyValuePair<string, AWSOperationRequestDescriptor> kv in operationHandler.RequestDescriptors)
{
var propertyName = kv.Key;
var descriptor = kv.Value;
if (descriptor.Map && descriptor.GetKeys)
{
AddMapKeyProperty(aws, request, propertyName, descriptor.RenameTo);
}
else if (descriptor.List && descriptor.GetCount)
{
AddListLengthProperty(aws, request, propertyName, descriptor.RenameTo);
}
}
}
}