Skip to content

Commit d29940a

Browse files
committed
changed from callback
1 parent 2e36fcc commit d29940a

File tree

4 files changed

+19
-32
lines changed

4 files changed

+19
-32
lines changed

src/aws-cpp-sdk-core/include/aws/core/auth/AWSCredentialsProvider.h

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@
1919
#include <aws/core/config/AWSProfileConfigLoader.h>
2020
#include <aws/core/client/RetryStrategy.h>
2121
#include <memory>
22-
#include <functional>
2322

2423
namespace Aws
2524
{
2625
class AmazonWebServiceRequest;
27-
26+
2827
namespace Client
2928
{
3029
struct ClientConfiguration;
@@ -77,16 +76,13 @@ namespace Aws
7776
virtual AWSCredentials GetAWSCredentials() = 0;
7877

7978
/**
80-
* Set callback for credential usage tracking
79+
* Interface that allows providers to modify the request during credential retrieval.
8180
*/
82-
virtual void SetCredentialTrackingCallback(std::function<void()> callback) { m_trackingCallback = callback; }
81+
virtual AWSCredentials GetAWSCredentials(Aws::AmazonWebServiceRequest& request) {
82+
AWS_UNREFERENCED_PARAM(request);
83+
return GetAWSCredentials();
84+
}
8385

84-
protected:
85-
/**
86-
* Call this when credentials are successfully retrieved for tracking
87-
*/
88-
void NotifyCredentialUsage() { if (m_trackingCallback) m_trackingCallback(); }
89-
9086
protected:
9187
/**
9288
* The default implementation keeps up with the cache times and lets you know if it's time to refresh your internal caching
@@ -97,7 +93,6 @@ namespace Aws
9793
mutable Aws::Utils::Threading::ReaderWriterLock m_reloadLock;
9894
private:
9995
long long m_lastLoadedMs;
100-
std::function<void()> m_trackingCallback;
10196
};
10297

10398
/**
@@ -154,16 +149,16 @@ namespace Aws
154149
class AWS_CORE_API EnvironmentAWSCredentialsProvider : public AWSCredentialsProvider
155150
{
156151
public:
157-
/**
158-
* Initializes environment credentials provider
159-
*/
160-
EnvironmentAWSCredentialsProvider() = default;
161-
162152
/**
163153
* Reads AWS credentials from the Environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY and AWS_SESSION_TOKEN if they exist. If they
164154
* are not found, empty credentials are returned. Credentials are not cached.
165155
*/
166156
AWSCredentials GetAWSCredentials() override;
157+
158+
/**
159+
* New interface that adds environment credential tracking to the request.
160+
*/
161+
AWSCredentials GetAWSCredentials(Aws::AmazonWebServiceRequest& request) override;
167162
};
168163

169164
/**

src/aws-cpp-sdk-core/include/aws/core/auth/AWSCredentialsProviderChain.h

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,7 @@ namespace Aws
2727
* When a credentials provider in the chain returns empty credentials,
2828
* We go on to the next provider until we have either exhausted the installed providers in the chain or something returns non-empty credentials.
2929
*/
30-
AWSCredentials GetAWSCredentials() override;
31-
32-
/**
33-
* Override to store and forward callback to providers in chain
34-
*/
35-
void SetCredentialTrackingCallback(std::function<void()> callback) override { m_chainTrackingCallback = callback; }
30+
virtual AWSCredentials GetAWSCredentials();
3631

3732
/**
3833
* Gets all providers stored in this chain.
@@ -55,7 +50,6 @@ namespace Aws
5550
Aws::Vector<std::shared_ptr<AWSCredentialsProvider> > m_providerChain;
5651
std::shared_ptr<AWSCredentialsProvider> m_cachedProvider;
5752
mutable Aws::Utils::Threading::ReaderWriterLock m_cachedProviderLock;
58-
std::function<void()> m_chainTrackingCallback;
5953
};
6054

6155
/**

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,15 @@ AWSCredentials EnvironmentAWSCredentialsProvider::GetAWSCredentials() //pass in
105105
}
106106
}
107107

108+
return credentials;
109+
}
110+
111+
AWSCredentials EnvironmentAWSCredentialsProvider::GetAWSCredentials(Aws::AmazonWebServiceRequest& request)
112+
{
113+
AWSCredentials credentials = GetAWSCredentials();
108114
if (!credentials.IsEmpty()) {
109-
// TODO: this will work
110-
// TODO: how does request get here?????
111-
// request.AddFeature(ENV_VAR)
112-
NotifyCredentialUsage();
115+
request.AddUserAgentFeature(Aws::Client::UserAgentFeature::CREDENTIALS_ENV_VARS);
113116
}
114-
115117
return credentials;
116118
}
117119

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ AWSCredentials AWSCredentialsProviderChain::GetAWSCredentials()
2222
{
2323
ReaderLockGuard lock(m_cachedProviderLock);
2424
if (m_cachedProvider) {
25-
// Forward callback to cached provider
26-
m_cachedProvider->SetCredentialTrackingCallback(m_chainTrackingCallback);
2725
AWSCredentials credentials = m_cachedProvider->GetAWSCredentials();
2826
if (!credentials.GetAWSAccessKeyId().empty() && !credentials.GetAWSSecretKey().empty())
2927
{
@@ -33,8 +31,6 @@ AWSCredentials AWSCredentialsProviderChain::GetAWSCredentials()
3331
lock.UpgradeToWriterLock();
3432
for (auto&& credentialsProvider : m_providerChain)
3533
{
36-
// Forward callback to each provider in chain
37-
credentialsProvider->SetCredentialTrackingCallback(m_chainTrackingCallback);
3834
AWSCredentials credentials = credentialsProvider->GetAWSCredentials();
3935
if (!credentials.GetAWSAccessKeyId().empty() && !credentials.GetAWSSecretKey().empty())
4036
{

0 commit comments

Comments
 (0)