Skip to content

Commit 33bcb18

Browse files
committed
changed from callback
1 parent d29940a commit 33bcb18

File tree

4 files changed

+36
-58
lines changed

4 files changed

+36
-58
lines changed

src/aws-cpp-sdk-core/source/auth/AWSCredentialsProvider.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ bool AWSCredentialsProvider::IsTimeToRefresh(long reloadFrequency)
7070
static const char* ENVIRONMENT_LOG_TAG = "EnvironmentAWSCredentialsProvider";
7171

7272

73-
AWSCredentials EnvironmentAWSCredentialsProvider::GetAWSCredentials() //pass in request or return request for tracking
73+
AWSCredentials EnvironmentAWSCredentialsProvider::GetAWSCredentials()
7474
{
7575
auto accessKey = Aws::Environment::GetEnv(ACCESS_KEY_ENV_VAR);
7676
AWSCredentials credentials;

src/aws-cpp-sdk-core/source/auth/AWSCredentialsProviderChain.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ AWSCredentials AWSCredentialsProviderChain::GetAWSCredentials()
4646

4747
DefaultAWSCredentialsProviderChain::DefaultAWSCredentialsProviderChain() : AWSCredentialsProviderChain()
4848
{
49-
AddProvider(Aws::MakeShared<EnvironmentAWSCredentialsProvider>(DefaultCredentialsProviderChainTag)); // track
49+
AddProvider(Aws::MakeShared<EnvironmentAWSCredentialsProvider>(DefaultCredentialsProviderChainTag));
5050
AddProvider(Aws::MakeShared<ProfileConfigFileAWSCredentialsProvider>(DefaultCredentialsProviderChainTag));
5151
AddProvider(Aws::MakeShared<ProcessCredentialsProvider>(DefaultCredentialsProviderChainTag));
52-
AddProvider(Aws::MakeShared<STSAssumeRoleWebIdentityCredentialsProvider>(DefaultCredentialsProviderChainTag)); // track
52+
AddProvider(Aws::MakeShared<STSAssumeRoleWebIdentityCredentialsProvider>(DefaultCredentialsProviderChainTag));
5353
AddProvider(Aws::MakeShared<SSOCredentialsProvider>(DefaultCredentialsProviderChainTag));
5454

5555
// General HTTP Credentials (prev. known as ECS TaskRole credentials) only available when ENVIRONMENT VARIABLE is set

src/aws-cpp-sdk-core/source/auth/signer/AWSAuthV4Signer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,5 +593,5 @@ Aws::Utils::ByteBuffer AWSAuthV4Signer::ComputeHash(const Aws::String& secretKey
593593

594594
Aws::Auth::AWSCredentials AWSAuthV4Signer::GetCredentials(const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) const {
595595
AWS_UNREFERENCED_PARAM(serviceSpecificParameters);
596-
return m_credentialsProvider->GetAWSCredentials();//
596+
return m_credentialsProvider->GetAWSCredentials();
597597
}

src/aws-cpp-sdk-core/source/client/AWSClient.cpp

Lines changed: 32 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,10 @@ HttpResponseOutcome AWSClient::AttemptOneRequest(const std::shared_ptr<Aws::Http
578578
}
579579

580580
// Track credential provider usage for User-Agent features
581-
TrackCredentialProviderUsage(request);
581+
auto credentialsProvider = GetCredentialsProvider();
582+
if (credentialsProvider) {
583+
credentialsProvider->GetAWSCredentials(const_cast<Aws::AmazonWebServiceRequest&>(request));
584+
}
582585

583586
auto signer = GetSignerByName(signerName);
584587
auto signedRequest = TracingUtils::MakeCallWithTiming<bool>([&]() -> bool {
@@ -910,6 +913,7 @@ void AWSClient::BuildHttpRequest(const Aws::AmazonWebServiceRequest& request, co
910913
if (Aws::Client::CompressionAlgorithm::NONE != selectedCompressionAlgorithm) {
911914
Aws::Client::RequestCompression rc;
912915
auto compressOutcome = rc.compress(request.GetBody(), selectedCompressionAlgorithm);
916+
913917
if (compressOutcome.IsSuccess()) {
914918
Aws::String compressionAlgorithmId = Aws::Client::GetCompressionAlgorithmId(selectedCompressionAlgorithm);
915919
AppendHeaderValueToRequest(httpRequest, CONTENT_ENCODING_HEADER, compressionAlgorithmId);
@@ -1031,63 +1035,37 @@ std::shared_ptr<Aws::Http::HttpResponse> AWSClient::MakeHttpRequest(std::shared_
10311035
return m_httpClient->MakeRequest(request, m_readRateLimiter.get(), m_writeRateLimiter.get());
10321036
}
10331037

1034-
void AWSClient::AppendRecursionDetectionHeader(std::shared_ptr<Aws::Http::HttpRequest> ioRequest)
1035-
{
1036-
if(!ioRequest || ioRequest->HasHeader(Aws::Http::X_AMZN_TRACE_ID_HEADER)) {
1037-
return;
1038-
}
1039-
Aws::String awsLambdaFunctionName = Aws::Environment::GetEnv(AWS_LAMBDA_FUNCTION_NAME);
1040-
if(awsLambdaFunctionName.empty()) {
1041-
return;
1042-
}
1043-
Aws::String xAmznTraceIdVal = Aws::Environment::GetEnv(X_AMZN_TRACE_ID);
1044-
if(xAmznTraceIdVal.empty()) {
1045-
return;
1046-
}
1038+
void AWSClient::AppendRecursionDetectionHeader(std::shared_ptr<Aws::Http::HttpRequest> ioRequest) {
1039+
if(!ioRequest || ioRequest->HasHeader(Aws::Http::X_AMZN_TRACE_ID_HEADER)) {
1040+
return;
1041+
}
1042+
Aws::String awsLambdaFunctionName = Aws::Environment::GetEnv(AWS_LAMBDA_FUNCTION_NAME);
1043+
if(awsLambdaFunctionName.empty()) {
1044+
return;
1045+
}
1046+
Aws::String xAmznTraceIdVal = Aws::Environment::GetEnv(X_AMZN_TRACE_ID);
1047+
if(xAmznTraceIdVal.empty()) {
1048+
return;
1049+
}
10471050

1048-
// Escape all non-printable ASCII characters by percent encoding
1049-
Aws::OStringStream xAmznTraceIdValEncodedStr;
1050-
for(const char ch : xAmznTraceIdVal)
1051+
// Escape all non-printable ASCII characters by percent encoding
1052+
Aws::OStringStream xAmznTraceIdValEncodedStr;
1053+
for(const char ch : xAmznTraceIdVal)
1054+
{
1055+
if (ch >= 0x20 && ch <= 0x7e) // ascii chars [32-126] or [' ' to '~'] are not escaped
10511056
{
1052-
if (ch >= 0x20 && ch <= 0x7e) // ascii chars [32-126] or [' ' to '~'] are not escaped
1053-
{
1054-
xAmznTraceIdValEncodedStr << ch;
1055-
}
1056-
else
1057-
{
1058-
// A percent-encoded octet is encoded as a character triplet
1059-
xAmznTraceIdValEncodedStr << '%' // consisting of the percent character "%"
1060-
<< std::hex << std::setfill('0') << std::setw(2) << std::uppercase
1061-
<< (size_t) ch //followed by the two hexadecimal digits representing that octet's numeric value
1062-
<< std::dec << std::setfill(' ') << std::setw(0) << std::nouppercase;
1063-
}
1057+
xAmznTraceIdValEncodedStr << ch;
10641058
}
1065-
xAmznTraceIdVal = xAmznTraceIdValEncodedStr.str();
1066-
1067-
ioRequest->SetHeaderValue(Aws::Http::X_AMZN_TRACE_ID_HEADER, xAmznTraceIdVal);
1068-
}
1069-
1070-
void AWSClient::TrackCredentialProviderUsage(const Aws::AmazonWebServiceRequest& request) const
1071-
{
1072-
auto credentialsProvider = GetCredentialsProvider();
1073-
if (!credentialsProvider)
1059+
else
10741060
{
1075-
return;
1061+
// A percent-encoded octet is encoded as a character triplet
1062+
xAmznTraceIdValEncodedStr << '%' // consisting of the percent character "%"
1063+
<< std::hex << std::setfill('0') << std::setw(2) << std::uppercase
1064+
<< (size_t) ch //followed by the two hexadecimal digits representing that octet's numeric value
1065+
<< std::dec << std::setfill(' ') << std::setw(0) << std::nouppercase;
10761066
}
1067+
}
1068+
xAmznTraceIdVal = xAmznTraceIdValEncodedStr.str();
10771069

1078-
// Set up callback for credential tracking
1079-
if (credentialsProvider) {
1080-
credentialsProvider->SetCredentialTrackingCallback([&request]() {
1081-
request.AddUserAgentFeature(Aws::Client::UserAgentFeature::CREDENTIALS_ENV_VARS);
1082-
AWS_LOGSTREAM_DEBUG(AWS_CLIENT_LOG_TAG, "Added CREDENTIALS_ENV_VARS to User-Agent");
1083-
});
1084-
}
1085-
1086-
// Trigger credential retrieval to enable tracking
1087-
if (credentialsProvider) {
1088-
credentialsProvider->GetAWSCredentials();
1089-
1090-
// Clear callback
1091-
credentialsProvider->SetCredentialTrackingCallback(nullptr);
1092-
}
1070+
ioRequest->SetHeaderValue(Aws::Http::X_AMZN_TRACE_ID_HEADER, xAmznTraceIdVal);
10931071
}

0 commit comments

Comments
 (0)