Skip to content

Commit 7aa911c

Browse files
committed
moved provider to header
1 parent eb97c05 commit 7aa911c

File tree

2 files changed

+71
-103
lines changed

2 files changed

+71
-103
lines changed

src/aws-cpp-sdk-core/include/aws/core/client/ConfiguredEndpointProvider.h

Lines changed: 71 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
#include <aws/core/endpoint/EndpointProviderBase.h>
88
#include <aws/core/client/ConfiguredEndpointResolver.h>
99
#include <aws/core/client/ClientConfiguration.h>
10+
#include <aws/core/utils/Optional.h>
11+
#include <aws/core/platform/Environment.h>
12+
#include <aws/core/http/URI.h>
1013
#include <memory>
1114

1215
namespace Aws
@@ -22,25 +25,86 @@ class ConfiguredEndpointProvider : public Aws::Endpoint::EndpointProviderBase<Cl
2225
std::shared_ptr<Aws::Endpoint::EndpointProviderBase<ClientConfigurationT>> inner,
2326
Aws::String serviceId,
2427
std::shared_ptr<Aws::Config::AWSConfigFileProfileConfigLoader> loader,
25-
const ClientConfigurationT& config);
28+
const ClientConfigurationT& config)
29+
: m_inner(std::move(inner)), m_serviceId(std::move(serviceId))
30+
{
31+
// Check for explicit override
32+
m_explicit = config.endpointOverride;
2633

27-
void InitBuiltInParameters(const ClientConfigurationT& config) override;
28-
void OverrideEndpoint(const Aws::String& endpoint) override;
34+
// Check for opt-out flags
35+
auto envValue = Environment::GetEnv("AWS_IGNORE_CONFIGURED_ENDPOINT_URLS");
36+
bool ignoreEnv = (envValue == "true" || envValue == "TRUE" || envValue == "True" || envValue == "1");
37+
38+
// Only resolve configured endpoints if not ignored and no explicit override
39+
if (!ignoreEnv && m_explicit.empty())
40+
{
41+
ConfiguredEndpointResolver::Options opts;
42+
opts.policy = ConfiguredEndpointsPolicy::UseConfigured;
43+
if (!config.profileName.empty()) {
44+
opts.profileName = config.profileName;
45+
}
46+
47+
ConfiguredEndpointResolver resolver(loader, opts);
48+
auto result = resolver.ResolveForService(m_serviceId);
49+
if (!result.url.empty()) {
50+
m_chain = result;
51+
}
52+
}
53+
}
54+
55+
void InitBuiltInParameters(const ClientConfigurationT& config) override
56+
{
57+
m_inner->InitBuiltInParameters(config);
58+
}
59+
60+
void OverrideEndpoint(const Aws::String& endpoint) override
61+
{
62+
m_explicit = endpoint;
63+
m_inner->OverrideEndpoint(endpoint);
64+
}
2965

3066
typename Aws::Endpoint::EndpointProviderBase<ClientConfigurationT>::ClientContextParameters&
31-
AccessClientContextParameters() override;
67+
AccessClientContextParameters() override
68+
{
69+
return m_inner->AccessClientContextParameters();
70+
}
3271

3372
const typename Aws::Endpoint::EndpointProviderBase<ClientConfigurationT>::ClientContextParameters&
34-
GetClientContextParameters() const override;
73+
GetClientContextParameters() const override
74+
{
75+
return m_inner->GetClientContextParameters();
76+
}
3577

3678
Aws::Endpoint::ResolveEndpointOutcome
37-
ResolveEndpoint(const Aws::Endpoint::EndpointParameters& params) const override;
79+
ResolveEndpoint(const Aws::Endpoint::EndpointParameters& params) const override
80+
{
81+
// 1. Explicit override wins
82+
if (!m_explicit.empty())
83+
{
84+
Aws::Http::URI uri(m_explicit);
85+
Aws::Endpoint::AWSEndpoint endpoint;
86+
endpoint.SetURI(uri);
87+
return Aws::Endpoint::ResolveEndpointOutcome(endpoint);
88+
}
89+
90+
// 2. Configured chain (env / services / profile)
91+
if (m_chain.has_value())
92+
{
93+
Aws::Http::URI uri(m_chain->url);
94+
Aws::Endpoint::AWSEndpoint endpoint;
95+
endpoint.SetURI(uri);
96+
return Aws::Endpoint::ResolveEndpointOutcome(endpoint);
97+
}
98+
99+
// 3. Default rules-based provider
100+
return m_inner->ResolveEndpoint(params);
101+
}
38102

39103
private:
40104
std::shared_ptr<Aws::Endpoint::EndpointProviderBase<ClientConfigurationT>> m_inner;
41105
Aws::String m_serviceId;
42106
Aws::String m_explicit;
43-
ResolvedEndpoint m_chain;
107+
Aws::Utils::Optional<ResolvedEndpoint> m_chain;
44108
};
45109

46110
} // namespace Client

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

Lines changed: 0 additions & 96 deletions
This file was deleted.

0 commit comments

Comments
 (0)