3434#end
3535#if($serviceNamespace == "S3Crt")
3636#set($clientConfigurationNamespace = $serviceNamespace)
37- #set($credentialsParam = ", &credentials")
38- #set($getAWSCredentials = "Aws::Auth::AWSCredentials credentials = credentialsProvider->GetAWSCredentials();
39- ")
40- #set($credentialsArg = ", const Aws::Auth::AWSCredentials* credentials")
37+ #set($credentialsParam = ", m_credProvider")
38+ #set($credentialsArg = ", const std::shared_ptr<Aws::Auth::AWSCredentialsProvider> credentialsProvider")
39+ #set($defaultCredentialsProviderChainParam = "m_credProvider")
40+ #set($defaultCredentialsProviderChainMember = ", m_credProvider(Aws::MakeShared<DefaultAWSCredentialsProviderChain>(ALLOCATION_TAG))")
41+ #set($simpleCredentialsProviderParam = "m_credProvider")
42+ #set($simpleCredentialsProviderMember = ", m_credProvider(Aws::MakeShared<SimpleAWSCredentialsProvider>(ALLOCATION_TAG, credentials))")
43+ #set($credentialsProviderMember = ", m_credProvider(credentialsProvider)")
4144#else
4245#set($clientConfigurationNamespace = "Client")
4346#set($credentialsParam = "")
44- #set($getAWSCredentials = "")
4547#set($credentialsArg = "")
48+ #set($defaultCredentialsProviderChainParam = "Aws::MakeShared<DefaultAWSCredentialsProviderChain>(ALLOCATION_TAG)")
49+ #set($defaultCredentialsProviderChainMember = "")
50+ #set($simpleCredentialsProviderParam = "Aws::MakeShared<SimpleAWSCredentialsProvider>(ALLOCATION_TAG, credentials)")
51+ #set($simpleCredentialsProviderMember = "")
52+ #set($credentialsProviderMember = "")
4653#end
4754#set($hasEventStreamInputOperation = false)
4855#foreach($operation in $serviceModel.operations)
5461#if($hasEventStreamInputOperation || $multiRegionAccessPointSupported)
5562${className}::${className}(const ${clientConfigurationNamespace}::ClientConfiguration& clientConfiguration${signPayloads}${virtualAddressing}${USEast1RegionalEndpointArgString}) :
5663 BASECLASS(clientConfiguration,
57- Aws::MakeShared<Aws::Auth::DefaultAuthSignerProvider>(ALLOCATION_TAG, Aws::MakeShared<DefaultAWSCredentialsProviderChain>(ALLOCATION_TAG) ,
64+ Aws::MakeShared<Aws::Auth::DefaultAuthSignerProvider>(ALLOCATION_TAG, ${defaultCredentialsProviderChainParam} ,
5865 SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region)${signPayloadsParam}${doubleEncodeValue}),
5966 Aws::MakeShared<${metadata.classNamePrefix}ErrorMarshaller>(ALLOCATION_TAG)),
60- m_executor(clientConfiguration.executor)${virtualAddressingInit}${USEast1RegionalEndpointInitString}
67+ m_executor(clientConfiguration.executor)${defaultCredentialsProviderChainMember}${ virtualAddressingInit}${USEast1RegionalEndpointInitString}
6168{
62- init(clientConfiguration);
69+ init(clientConfiguration${credentialsParam} );
6370}
6471
6572${className}::${className}(const AWSCredentials& credentials, const ${clientConfigurationNamespace}::ClientConfiguration& clientConfiguration${signPayloads}${virtualAddressing}${USEast1RegionalEndpointArgString}) :
6673 BASECLASS(clientConfiguration,
67- Aws::MakeShared<Aws::Auth::DefaultAuthSignerProvider>(ALLOCATION_TAG, Aws::MakeShared<SimpleAWSCredentialsProvider>(ALLOCATION_TAG, credentials) ,
74+ Aws::MakeShared<Aws::Auth::DefaultAuthSignerProvider>(ALLOCATION_TAG, ${simpleCredentialsProviderParam} ,
6875 SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region)${signPayloadsParam}${doubleEncodeValue}),
6976 Aws::MakeShared<${metadata.classNamePrefix}ErrorMarshaller>(ALLOCATION_TAG)),
70- m_executor(clientConfiguration.executor)${virtualAddressingInit}${USEast1RegionalEndpointInitString}
77+ m_executor(clientConfiguration.executor)${simpleCredentialsProviderMember}${ virtualAddressingInit}${USEast1RegionalEndpointInitString}
7178{
7279 init(clientConfiguration${credentialsParam});
7380}
@@ -78,27 +85,27 @@ ${className}::${className}(const std::shared_ptr<AWSCredentialsProvider>& creden
7885 Aws::MakeShared<Aws::Auth::DefaultAuthSignerProvider>(ALLOCATION_TAG, credentialsProvider,
7986 SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region)${signPayloadsParam}${doubleEncodeValue}),
8087 Aws::MakeShared<${metadata.classNamePrefix}ErrorMarshaller>(ALLOCATION_TAG)),
81- m_executor(clientConfiguration.executor)${virtualAddressingInit}${USEast1RegionalEndpointInitString}
88+ m_executor(clientConfiguration.executor)${credentialsProviderMember}${ virtualAddressingInit}${USEast1RegionalEndpointInitString}
8289{
83- ${getAWSCredentials} init(clientConfiguration${credentialsParam});
90+ init(clientConfiguration${credentialsParam});
8491}
8592#else
8693${className}::${className}(const ${clientConfigurationNamespace}::ClientConfiguration& clientConfiguration${signPayloads}${virtualAddressing}${USEast1RegionalEndpointArgString}) :
8794 BASECLASS(clientConfiguration,
88- Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, Aws::MakeShared<DefaultAWSCredentialsProviderChain>(ALLOCATION_TAG) ,
95+ Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, ${defaultCredentialsProviderChainParam} ,
8996 SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region)${signPayloadsParam}${doubleEncodeValue}),
9097 Aws::MakeShared<${metadata.classNamePrefix}ErrorMarshaller>(ALLOCATION_TAG)),
91- m_executor(clientConfiguration.executor)${virtualAddressingInit}${USEast1RegionalEndpointInitString}
98+ m_executor(clientConfiguration.executor)${defaultCredentialsProviderChainMember}${ virtualAddressingInit}${USEast1RegionalEndpointInitString}
9299{
93- init(clientConfiguration);
100+ init(clientConfiguration${credentialsParam} );
94101}
95102
96103${className}::${className}(const AWSCredentials& credentials, const ${clientConfigurationNamespace}::ClientConfiguration& clientConfiguration${signPayloads}${virtualAddressing}${USEast1RegionalEndpointArgString}) :
97104 BASECLASS(clientConfiguration,
98- Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, Aws::MakeShared<SimpleAWSCredentialsProvider>(ALLOCATION_TAG, credentials) ,
105+ Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, ${simpleCredentialsProviderParam} ,
99106 SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region)${signPayloadsParam}${doubleEncodeValue}),
100107 Aws::MakeShared<${metadata.classNamePrefix}ErrorMarshaller>(ALLOCATION_TAG)),
101- m_executor(clientConfiguration.executor)${virtualAddressingInit}${USEast1RegionalEndpointInitString}
108+ m_executor(clientConfiguration.executor)${simpleCredentialsProviderMember}${ virtualAddressingInit}${USEast1RegionalEndpointInitString}
102109{
103110 init(clientConfiguration${credentialsParam});
104111}
@@ -109,9 +116,9 @@ ${className}::${className}(const std::shared_ptr<AWSCredentialsProvider>& creden
109116 Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, credentialsProvider,
110117 SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region)${signPayloadsParam}${doubleEncodeValue}),
111118 Aws::MakeShared<${metadata.classNamePrefix}ErrorMarshaller>(ALLOCATION_TAG)),
112- m_executor(clientConfiguration.executor)${virtualAddressingInit}${USEast1RegionalEndpointInitString}
119+ m_executor(clientConfiguration.executor)${virtualAddressingInit}${USEast1RegionalEndpointInitString}${credentialsProviderMember}
113120{
114- ${getAWSCredentials} init(clientConfiguration${credentialsParam});
121+ init(clientConfiguration${credentialsParam});
115122}
116123#end
117124
@@ -191,23 +198,18 @@ void ${className}::init(const ${clientConfigurationNamespace}::ClientConfigurati
191198 Aws::Crt::Io::ClientBootstrap* clientBootstrap = config.clientBootstrap ? config.clientBootstrap.get() : Aws::GetDefaultClientBootstrap();
192199 s3CrtConfig.client_bootstrap = clientBootstrap->GetUnderlyingHandle();
193200
194- std::shared_ptr<Aws::Crt::Auth::ICredentialsProvider> provider(nullptr);
195- if (credentials)
196- {
197- Aws::Crt::Auth::CredentialsProviderStaticConfig staticCreds;
198- staticCreds.AccessKeyId = Aws::Crt::ByteCursorFromCString(credentials->GetAWSAccessKeyId().c_str());
199- staticCreds.SecretAccessKey = Aws::Crt::ByteCursorFromCString(credentials->GetAWSSecretKey().c_str());
200- staticCreds.SessionToken = Aws::Crt::ByteCursorFromCString(credentials->GetSessionToken().c_str());
201- provider = Aws::Crt::Auth::CredentialsProvider::CreateCredentialsProviderStatic(staticCreds);
202- }
203- else
204- {
205- Aws::Crt::Auth::CredentialsProviderChainDefaultConfig credsConfig;
206- credsConfig.Bootstrap = clientBootstrap;
207- provider = Aws::Crt::Auth::CredentialsProvider::CreateCredentialsProviderChainDefault(credsConfig);
208- }
201+ m_crtCredProvider = Aws::Crt::Auth::CredentialsProvider::CreateCredentialsProviderDelegate({
202+ std::bind([](const std::shared_ptr<AWSCredentialsProvider>& provider) {
203+ AWSCredentials credentials = provider->GetAWSCredentials();
204+ return Aws::MakeShared<Aws::Crt::Auth::Credentials>(ALLOCATION_TAG,
205+ *Aws::MakeShared<Aws::Crt::ByteCursor>(ALLOCATION_TAG, Aws::Crt::ByteCursorFromCString(credentials.GetAWSAccessKeyId().c_str())),
206+ *Aws::MakeShared<Aws::Crt::ByteCursor>(ALLOCATION_TAG, Aws::Crt::ByteCursorFromCString(credentials.GetAWSSecretKey().c_str())),
207+ *Aws::MakeShared<Aws::Crt::ByteCursor>(ALLOCATION_TAG, Aws::Crt::ByteCursorFromCString(credentials.GetSessionToken().c_str())),
208+ credentials.GetExpiration().Millis());
209+ }, credentialsProvider)
210+ });
209211
210- aws_s3_init_default_signing_config(&m_s3CrtSigningConfig, Aws::Crt::ByteCursorFromCString(config.region.c_str()), provider ->GetUnderlyingHandle());
212+ aws_s3_init_default_signing_config(&m_s3CrtSigningConfig, Aws::Crt::ByteCursorFromCString(config.region.c_str()), m_crtCredProvider ->GetUnderlyingHandle());
211213 m_s3CrtSigningConfig.flags.use_double_uri_encode = false;
212214 s3CrtConfig.signing_config = &m_s3CrtSigningConfig;
213215
0 commit comments