Skip to content

Commit 4614d25

Browse files
committed
Revert "Only append if we have credential features"
This reverts commit 29614f4.
1 parent 0bae7f6 commit 4614d25

File tree

1 file changed

+17
-63
lines changed

1 file changed

+17
-63
lines changed

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

Lines changed: 17 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
#include <aws/core/auth/signer/AWSAuthSignerCommon.h>
88
#include <aws/core/auth/signer/AWSAuthSignerHelper.h>
99

10-
#include <aws/core/AmazonWebServiceRequest.h>
1110
#include <aws/core/auth/AWSCredentialsProvider.h>
1211
#include <aws/core/client/UserAgent.h>
1312
#include <aws/core/http/HttpRequest.h>
@@ -27,7 +26,6 @@
2726

2827
#include <iomanip>
2928
#include <cstring>
30-
#include <map>
3129

3230
using namespace Aws;
3331
using namespace Aws::Client;
@@ -338,16 +336,11 @@ bool AWSAuthV4Signer::SignRequestWithCreds(Aws::Http::HttpRequest& request, cons
338336

339337
bool AWSAuthV4Signer::SignRequest(Aws::Http::HttpRequest& request, const char* region, const char* serviceName, bool signBody) const
340338
{
341-
AWSCredentials credentials = GetCredentials(request.GetServiceSpecificParameters());
342-
return SignRequestWithCreds(request, credentials, region, serviceName, signBody);
343-
}
344-
345-
bool AWSAuthV4Signer::SignRequest(Aws::Http::HttpRequest& request, Aws::AmazonWebServiceRequest& awsRequest, const char* region, const char* serviceName, bool signBody) const
346-
{
347-
AWSCredentials credentials = GetCredentials(awsRequest, request.GetServiceSpecificParameters());
339+
Aws::Auth::CredentialsResolutionContext context;
340+
AWSCredentials credentials = GetCredentials(context, request.GetServiceSpecificParameters());
348341

349-
// Update User-Agent with credential tracking features added during credential resolution
350-
UpdateUserAgentWithCredentialFeatures(request, awsRequest);
342+
// Update User-Agent with credential tracking features from context
343+
UpdateUserAgentWithCredentialFeatures(request, context);
351344

352345
return SignRequestWithCreds(request, credentials, region, serviceName, signBody);
353346
}
@@ -609,77 +602,38 @@ Aws::Auth::AWSCredentials AWSAuthV4Signer::GetCredentials(const std::shared_ptr<
609602
return m_credentialsProvider->GetAWSCredentials();
610603
}
611604

612-
Aws::Auth::AWSCredentials AWSAuthV4Signer::GetCredentials(Aws::AmazonWebServiceRequest& awsRequest, const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) const {
605+
Aws::Auth::AWSCredentials AWSAuthV4Signer::GetCredentials(Aws::Auth::CredentialsResolutionContext& context, const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) const {
613606
AWS_UNREFERENCED_PARAM(serviceSpecificParameters);
614-
return m_credentialsProvider->GetAWSCredentials(awsRequest);
607+
return m_credentialsProvider->GetAWSCredentials(context);
615608
}
616609

617-
void AWSAuthV4Signer::UpdateUserAgentWithCredentialFeatures(Aws::Http::HttpRequest& request, const Aws::AmazonWebServiceRequest& awsRequest) const {
610+
void AWSAuthV4Signer::UpdateUserAgentWithCredentialFeatures(Aws::Http::HttpRequest& request, const Aws::Auth::CredentialsResolutionContext& context) const {
618611
if (!request.HasHeader(USER_AGENT)) {
619612
return;
620613
}
621614

622-
const auto& features = awsRequest.GetUserAgentFeatures();
615+
const auto& features = context.GetUserAgentFeatures();
623616
if (features.empty()) {
624617
return;
625618
}
626619

627-
// Get existing User-Agent
628-
Aws::String existingUA = request.GetHeaderValue(USER_AGENT);
629-
630-
// Build credential metrics string
631-
Aws::StringStream credentialMetrics;
632-
bool firstFeature = true;
633-
620+
// Build credential features string
621+
Aws::StringStream credentialFeatures;
634622
for (const auto& feature : features) {
635-
char featureChar = 0;
636623
switch (feature) {
637624
case Aws::Client::UserAgentFeature::CREDENTIALS_ENV_VARS:
638-
featureChar = 'g';
625+
credentialFeatures << "g";
639626
break;
640-
// Add other credential feature mappings as needed
641627
default:
642-
continue; // Skip non-credential features
643-
}
644-
645-
if (!firstFeature) {
646-
credentialMetrics << ",";
628+
// Skip non-credential features
629+
break;
647630
}
648-
credentialMetrics << featureChar;
649-
firstFeature = false;
650-
}
651-
652-
if (credentialMetrics.str().empty()) {
653-
return;
654631
}
655632

656-
// Parse and update existing User-Agent
657-
bool metricsUpdated = false;
633+
// Append credential features to existing UA
634+
Aws::String existingUA = request.GetHeaderValue(USER_AGENT);
658635
Aws::StringStream updatedUA;
659-
const auto parts = Aws::Utils::StringUtils::Split(existingUA, ' ');
636+
updatedUA << existingUA << " m/" << credentialFeatures.str();
660637

661-
for (size_t i = 0; i < parts.size(); ++i) {
662-
if (i > 0) {
663-
updatedUA << ' ';
664-
}
665-
666-
if (parts[i].find("m/") == 0) {
667-
// Add credentials to business metrics
668-
updatedUA << parts[i];
669-
if (!parts[i].empty() && parts[i].back() != '/') {
670-
updatedUA << ',';
671-
}
672-
updatedUA << credentialMetrics.str();
673-
metricsUpdated = true;
674-
} else {
675-
updatedUA << parts[i];
676-
}
677-
}
678-
679-
// If no metrics section found, add one
680-
if (!metricsUpdated) {
681-
updatedUA << " m/" << credentialMetrics.str();
682-
}
683-
684638
request.SetUserAgent(updatedUA.str());
685-
}
639+
}

0 commit comments

Comments
 (0)