aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint
diff options
context:
space:
mode:
authordakovalkov <dakovalkov@yandex-team.com>2023-12-03 13:33:55 +0300
committerdakovalkov <dakovalkov@yandex-team.com>2023-12-03 14:04:39 +0300
commit2a718325637e5302334b6d0a6430f63168f8dbb3 (patch)
tree64be81080b7df9ec1d86d053a0c394ae53fcf1fe /contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint
parente0d94a470142d95c3007e9c5d80380994940664a (diff)
downloadydb-2a718325637e5302334b6d0a6430f63168f8dbb3.tar.gz
Update contrib/libs/aws-sdk-cpp to 1.11.37
Diffstat (limited to 'contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint')
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/AWSEndpoint.cpp86
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/AWSPartitions.cpp153
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/BuiltInParameters.cpp135
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/ClientContextParameters.cpp61
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/DefaultEndpointProvider.cpp236
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/EndpointProviderBase.cpp20
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/internal/AWSEndpointAttribute.cpp82
7 files changed, 773 insertions, 0 deletions
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/AWSEndpoint.cpp b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/AWSEndpoint.cpp
new file mode 100644
index 0000000000..4990faff24
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/AWSEndpoint.cpp
@@ -0,0 +1,86 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#include <aws/core/endpoint/AWSEndpoint.h>
+#include <aws/core/utils/DNS.h>
+
+namespace Aws
+{
+namespace Endpoint
+{
+
+Aws::String AWSEndpoint::GetURL() const
+{
+ return m_uri.GetURIString();
+}
+
+void AWSEndpoint::SetURL(Aws::String url)
+{
+ m_uri = std::move(url);
+}
+
+const Aws::Http::URI& AWSEndpoint::GetURI() const
+{
+ return m_uri;
+}
+
+void AWSEndpoint::SetURI(Aws::Http::URI uri)
+{
+ m_uri = std::move(uri);
+}
+
+AWSEndpoint::OptionalError AWSEndpoint::AddPrefixIfMissing(const Aws::String& prefix)
+{
+ if (m_uri.GetAuthority().rfind(prefix, 0) == 0)
+ {
+ // uri already starts with a prefix
+ return OptionalError();
+ }
+
+ if (Aws::Utils::IsValidHost(prefix + m_uri.GetAuthority()))
+ {
+ m_uri.SetAuthority(prefix + m_uri.GetAuthority());
+ return OptionalError();
+ }
+
+ return OptionalError(
+ Aws::Client::AWSError<Aws::Client::CoreErrors>(
+ Aws::Client::CoreErrors::ENDPOINT_RESOLUTION_FAILURE, "",
+ Aws::String("Failed to add host prefix, resulting uri is an invalid hostname: ") + prefix + m_uri.GetAuthority(),
+ false/*retryable*/));
+}
+
+void AWSEndpoint::SetQueryString(const Aws::String& queryString)
+{
+ m_uri.SetQueryString(queryString);
+}
+
+const Crt::Optional<AWSEndpoint::EndpointAttributes>& AWSEndpoint::GetAttributes() const
+{
+ return m_attributes;
+}
+
+Crt::Optional<AWSEndpoint::EndpointAttributes>& AWSEndpoint::AccessAttributes()
+{
+ return m_attributes;
+}
+
+void AWSEndpoint::SetAttributes(AWSEndpoint::EndpointAttributes&& attributes)
+{
+ m_attributes = std::move(attributes);
+}
+
+const Aws::UnorderedMap<Aws::String, Aws::String>& AWSEndpoint::GetHeaders() const
+{
+ return m_headers;
+}
+
+void AWSEndpoint::SetHeaders(Aws::UnorderedMap<Aws::String, Aws::String> headers)
+{
+ m_headers = std::move(headers);
+}
+
+} // namespace Endpoint
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/AWSPartitions.cpp b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/AWSPartitions.cpp
new file mode 100644
index 0000000000..bfe3cf6147
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/AWSPartitions.cpp
@@ -0,0 +1,153 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#include <aws/core/endpoint/AWSPartitions.h>
+#include <aws/core/utils/memory/stl/AWSArray.h>
+
+namespace Aws
+{
+namespace Endpoint
+{
+const size_t AWSPartitions::PartitionsBlobStrLen = 3166;
+const size_t AWSPartitions::PartitionsBlobSize = 3167;
+
+using PartitionsBlobT = Aws::Array<const char, AWSPartitions::PartitionsBlobSize>;
+static constexpr PartitionsBlobT PartitionsBlob = {{
+'{','"','p','a','r','t','i','t','i','o','n','s','"',':','[','{','"','i','d','"',':','"','a','w','s',
+'"',',','"','o','u','t','p','u','t','s','"',':','{','"','d','n','s','S','u','f','f','i','x','"',':',
+'"','a','m','a','z','o','n','a','w','s','.','c','o','m','"',',','"','d','u','a','l','S','t','a','c',
+'k','D','n','s','S','u','f','f','i','x','"',':','"','a','p','i','.','a','w','s','"',',','"','n','a',
+'m','e','"',':','"','a','w','s','"',',','"','s','u','p','p','o','r','t','s','D','u','a','l','S','t',
+'a','c','k','"',':','t','r','u','e',',','"','s','u','p','p','o','r','t','s','F','I','P','S','"',':',
+'t','r','u','e','}',',','"','r','e','g','i','o','n','R','e','g','e','x','"',':','"','^','(','u','s',
+'|','e','u','|','a','p','|','s','a','|','c','a','|','m','e','|','a','f',')','\\','\\','-','\\','\\','w',
+'+','\\','\\','-','\\','\\','d','+','$','"',',','"','r','e','g','i','o','n','s','"',':','{','"','a','f',
+'-','s','o','u','t','h','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':',
+'"','A','f','r','i','c','a',' ','(','C','a','p','e',' ','T','o','w','n',')','"','}',',','"','a','p',
+'-','e','a','s','t','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"',
+'A','s','i','a',' ','P','a','c','i','f','i','c',' ','(','H','o','n','g',' ','K','o','n','g',')','"',
+'}',',','"','a','p','-','n','o','r','t','h','e','a','s','t','-','1','"',':','{','"','d','e','s','c',
+'r','i','p','t','i','o','n','"',':','"','A','s','i','a',' ','P','a','c','i','f','i','c',' ','(','T',
+'o','k','y','o',')','"','}',',','"','a','p','-','n','o','r','t','h','e','a','s','t','-','2','"',':',
+'{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','A','s','i','a',' ','P','a','c','i',
+'f','i','c',' ','(','S','e','o','u','l',')','"','}',',','"','a','p','-','n','o','r','t','h','e','a',
+'s','t','-','3','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','A','s','i',
+'a',' ','P','a','c','i','f','i','c',' ','(','O','s','a','k','a',')','"','}',',','"','a','p','-','s',
+'o','u','t','h','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','A',
+'s','i','a',' ','P','a','c','i','f','i','c',' ','(','M','u','m','b','a','i',')','"','}',',','"','a',
+'p','-','s','o','u','t','h','-','2','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',
+':','"','A','s','i','a',' ','P','a','c','i','f','i','c',' ','(','H','y','d','e','r','a','b','a','d',
+')','"','}',',','"','a','p','-','s','o','u','t','h','e','a','s','t','-','1','"',':','{','"','d','e',
+'s','c','r','i','p','t','i','o','n','"',':','"','A','s','i','a',' ','P','a','c','i','f','i','c',' ',
+'(','S','i','n','g','a','p','o','r','e',')','"','}',',','"','a','p','-','s','o','u','t','h','e','a',
+'s','t','-','2','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','A','s','i',
+'a',' ','P','a','c','i','f','i','c',' ','(','S','y','d','n','e','y',')','"','}',',','"','a','p','-',
+'s','o','u','t','h','e','a','s','t','-','3','"',':','{','"','d','e','s','c','r','i','p','t','i','o',
+'n','"',':','"','A','s','i','a',' ','P','a','c','i','f','i','c',' ','(','J','a','k','a','r','t','a',
+')','"','}',',','"','a','p','-','s','o','u','t','h','e','a','s','t','-','4','"',':','{','"','d','e',
+'s','c','r','i','p','t','i','o','n','"',':','"','A','s','i','a',' ','P','a','c','i','f','i','c',' ',
+'(','M','e','l','b','o','u','r','n','e',')','"','}',',','"','a','w','s','-','g','l','o','b','a','l',
+'"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','A','W','S',' ','S','t','a',
+'n','d','a','r','d',' ','g','l','o','b','a','l',' ','r','e','g','i','o','n','"','}',',','"','c','a',
+'-','c','e','n','t','r','a','l','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n',
+'"',':','"','C','a','n','a','d','a',' ','(','C','e','n','t','r','a','l',')','"','}',',','"','e','u',
+'-','c','e','n','t','r','a','l','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n',
+'"',':','"','E','u','r','o','p','e',' ','(','F','r','a','n','k','f','u','r','t',')','"','}',',','"',
+'e','u','-','c','e','n','t','r','a','l','-','2','"',':','{','"','d','e','s','c','r','i','p','t','i',
+'o','n','"',':','"','E','u','r','o','p','e',' ','(','Z','u','r','i','c','h',')','"','}',',','"','e',
+'u','-','n','o','r','t','h','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',
+':','"','E','u','r','o','p','e',' ','(','S','t','o','c','k','h','o','l','m',')','"','}',',','"','e',
+'u','-','s','o','u','t','h','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',
+':','"','E','u','r','o','p','e',' ','(','M','i','l','a','n',')','"','}',',','"','e','u','-','s','o',
+'u','t','h','-','2','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','E','u',
+'r','o','p','e',' ','(','S','p','a','i','n',')','"','}',',','"','e','u','-','w','e','s','t','-','1',
+'"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','E','u','r','o','p','e',' ',
+'(','I','r','e','l','a','n','d',')','"','}',',','"','e','u','-','w','e','s','t','-','2','"',':','{',
+'"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','E','u','r','o','p','e',' ','(','L','o',
+'n','d','o','n',')','"','}',',','"','e','u','-','w','e','s','t','-','3','"',':','{','"','d','e','s',
+'c','r','i','p','t','i','o','n','"',':','"','E','u','r','o','p','e',' ','(','P','a','r','i','s',')',
+'"','}',',','"','m','e','-','c','e','n','t','r','a','l','-','1','"',':','{','"','d','e','s','c','r',
+'i','p','t','i','o','n','"',':','"','M','i','d','d','l','e',' ','E','a','s','t',' ','(','U','A','E',
+')','"','}',',','"','m','e','-','s','o','u','t','h','-','1','"',':','{','"','d','e','s','c','r','i',
+'p','t','i','o','n','"',':','"','M','i','d','d','l','e',' ','E','a','s','t',' ','(','B','a','h','r',
+'a','i','n',')','"','}',',','"','s','a','-','e','a','s','t','-','1','"',':','{','"','d','e','s','c',
+'r','i','p','t','i','o','n','"',':','"','S','o','u','t','h',' ','A','m','e','r','i','c','a',' ','(',
+'S','a','o',' ','P','a','u','l','o',')','"','}',',','"','u','s','-','e','a','s','t','-','1','"',':',
+'{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','U','S',' ','E','a','s','t',' ','(',
+'N','.',' ','V','i','r','g','i','n','i','a',')','"','}',',','"','u','s','-','e','a','s','t','-','2',
+'"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','U','S',' ','E','a','s','t',
+' ','(','O','h','i','o',')','"','}',',','"','u','s','-','w','e','s','t','-','1','"',':','{','"','d',
+'e','s','c','r','i','p','t','i','o','n','"',':','"','U','S',' ','W','e','s','t',' ','(','N','.',' ',
+'C','a','l','i','f','o','r','n','i','a',')','"','}',',','"','u','s','-','w','e','s','t','-','2','"',
+':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','U','S',' ','W','e','s','t',' ',
+'(','O','r','e','g','o','n',')','"','}','}','}',',','{','"','i','d','"',':','"','a','w','s','-','c',
+'n','"',',','"','o','u','t','p','u','t','s','"',':','{','"','d','n','s','S','u','f','f','i','x','"',
+':','"','a','m','a','z','o','n','a','w','s','.','c','o','m','.','c','n','"',',','"','d','u','a','l',
+'S','t','a','c','k','D','n','s','S','u','f','f','i','x','"',':','"','a','p','i','.','a','m','a','z',
+'o','n','w','e','b','s','e','r','v','i','c','e','s','.','c','o','m','.','c','n','"',',','"','n','a',
+'m','e','"',':','"','a','w','s','-','c','n','"',',','"','s','u','p','p','o','r','t','s','D','u','a',
+'l','S','t','a','c','k','"',':','t','r','u','e',',','"','s','u','p','p','o','r','t','s','F','I','P',
+'S','"',':','t','r','u','e','}',',','"','r','e','g','i','o','n','R','e','g','e','x','"',':','"','^',
+'c','n','\\','\\','-','\\','\\','w','+','\\','\\','-','\\','\\','d','+','$','"',',','"','r','e','g','i','o',
+'n','s','"',':','{','"','a','w','s','-','c','n','-','g','l','o','b','a','l','"',':','{','"','d','e',
+'s','c','r','i','p','t','i','o','n','"',':','"','A','W','S',' ','C','h','i','n','a',' ','g','l','o',
+'b','a','l',' ','r','e','g','i','o','n','"','}',',','"','c','n','-','n','o','r','t','h','-','1','"',
+':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','C','h','i','n','a',' ','(','B',
+'e','i','j','i','n','g',')','"','}',',','"','c','n','-','n','o','r','t','h','w','e','s','t','-','1',
+'"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','C','h','i','n','a',' ','(',
+'N','i','n','g','x','i','a',')','"','}','}','}',',','{','"','i','d','"',':','"','a','w','s','-','u',
+'s','-','g','o','v','"',',','"','o','u','t','p','u','t','s','"',':','{','"','d','n','s','S','u','f',
+'f','i','x','"',':','"','a','m','a','z','o','n','a','w','s','.','c','o','m','"',',','"','d','u','a',
+'l','S','t','a','c','k','D','n','s','S','u','f','f','i','x','"',':','"','a','p','i','.','a','w','s',
+'"',',','"','n','a','m','e','"',':','"','a','w','s','-','u','s','-','g','o','v','"',',','"','s','u',
+'p','p','o','r','t','s','D','u','a','l','S','t','a','c','k','"',':','t','r','u','e',',','"','s','u',
+'p','p','o','r','t','s','F','I','P','S','"',':','t','r','u','e','}',',','"','r','e','g','i','o','n',
+'R','e','g','e','x','"',':','"','^','u','s','\\','\\','-','g','o','v','\\','\\','-','\\','\\','w','+','\\',
+'\\','-','\\','\\','d','+','$','"',',','"','r','e','g','i','o','n','s','"',':','{','"','a','w','s','-',
+'u','s','-','g','o','v','-','g','l','o','b','a','l','"',':','{','"','d','e','s','c','r','i','p','t',
+'i','o','n','"',':','"','A','W','S',' ','G','o','v','C','l','o','u','d',' ','(','U','S',')',' ','g',
+'l','o','b','a','l',' ','r','e','g','i','o','n','"','}',',','"','u','s','-','g','o','v','-','e','a',
+'s','t','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','A','W','S',
+' ','G','o','v','C','l','o','u','d',' ','(','U','S','-','E','a','s','t',')','"','}',',','"','u','s',
+'-','g','o','v','-','w','e','s','t','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o',
+'n','"',':','"','A','W','S',' ','G','o','v','C','l','o','u','d',' ','(','U','S','-','W','e','s','t',
+')','"','}','}','}',',','{','"','i','d','"',':','"','a','w','s','-','i','s','o','"',',','"','o','u',
+'t','p','u','t','s','"',':','{','"','d','n','s','S','u','f','f','i','x','"',':','"','c','2','s','.',
+'i','c','.','g','o','v','"',',','"','d','u','a','l','S','t','a','c','k','D','n','s','S','u','f','f',
+'i','x','"',':','"','c','2','s','.','i','c','.','g','o','v','"',',','"','n','a','m','e','"',':','"',
+'a','w','s','-','i','s','o','"',',','"','s','u','p','p','o','r','t','s','D','u','a','l','S','t','a',
+'c','k','"',':','f','a','l','s','e',',','"','s','u','p','p','o','r','t','s','F','I','P','S','"',':',
+'t','r','u','e','}',',','"','r','e','g','i','o','n','R','e','g','e','x','"',':','"','^','u','s','\\',
+'\\','-','i','s','o','\\','\\','-','\\','\\','w','+','\\','\\','-','\\','\\','d','+','$','"',',','"','r','e',
+'g','i','o','n','s','"',':','{','"','a','w','s','-','i','s','o','-','g','l','o','b','a','l','"',':',
+'{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','A','W','S',' ','I','S','O',' ','(',
+'U','S',')',' ','g','l','o','b','a','l',' ','r','e','g','i','o','n','"','}',',','"','u','s','-','i',
+'s','o','-','e','a','s','t','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',
+':','"','U','S',' ','I','S','O',' ','E','a','s','t','"','}',',','"','u','s','-','i','s','o','-','w',
+'e','s','t','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"','U','S',
+' ','I','S','O',' ','W','E','S','T','"','}','}','}',',','{','"','i','d','"',':','"','a','w','s','-',
+'i','s','o','-','b','"',',','"','o','u','t','p','u','t','s','"',':','{','"','d','n','s','S','u','f',
+'f','i','x','"',':','"','s','c','2','s','.','s','g','o','v','.','g','o','v','"',',','"','d','u','a',
+'l','S','t','a','c','k','D','n','s','S','u','f','f','i','x','"',':','"','s','c','2','s','.','s','g',
+'o','v','.','g','o','v','"',',','"','n','a','m','e','"',':','"','a','w','s','-','i','s','o','-','b',
+'"',',','"','s','u','p','p','o','r','t','s','D','u','a','l','S','t','a','c','k','"',':','f','a','l',
+'s','e',',','"','s','u','p','p','o','r','t','s','F','I','P','S','"',':','t','r','u','e','}',',','"',
+'r','e','g','i','o','n','R','e','g','e','x','"',':','"','^','u','s','\\','\\','-','i','s','o','b','\\',
+'\\','-','\\','\\','w','+','\\','\\','-','\\','\\','d','+','$','"',',','"','r','e','g','i','o','n','s','"',
+':','{','"','a','w','s','-','i','s','o','-','b','-','g','l','o','b','a','l','"',':','{','"','d','e',
+'s','c','r','i','p','t','i','o','n','"',':','"','A','W','S',' ','I','S','O','B',' ','(','U','S',')',
+' ','g','l','o','b','a','l',' ','r','e','g','i','o','n','"','}',',','"','u','s','-','i','s','o','b',
+'-','e','a','s','t','-','1','"',':','{','"','d','e','s','c','r','i','p','t','i','o','n','"',':','"',
+'U','S',' ','I','S','O','B',' ','E','a','s','t',' ','(','O','h','i','o',')','"','}','}','}',']',',',
+'"','v','e','r','s','i','o','n','"',':','"','1','.','1','"','}','\0'
+}};
+
+const char* AWSPartitions::GetPartitionsBlob()
+{
+ return PartitionsBlob.data();
+}
+
+} // namespace Endpoint
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/BuiltInParameters.cpp b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/BuiltInParameters.cpp
new file mode 100644
index 0000000000..43c3e2f0f9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/BuiltInParameters.cpp
@@ -0,0 +1,135 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#include <aws/core/endpoint/BuiltInParameters.h>
+#include <aws/core/utils/logging/LogMacros.h>
+
+static const char ENDPOINT_BUILTIN_LOG_TAG[] = "EndpointBuiltInParameters";
+
+namespace Aws
+{
+namespace Endpoint
+{
+ void BuiltInParameters::OverrideEndpoint(const Aws::String& endpoint, const Aws::Http::Scheme& scheme)
+ {
+ static const char* SDK_ENDPOINT = "Endpoint";
+
+ if (endpoint.compare(0, 7, "http://") == 0 || endpoint.compare(0, 8, "https://") == 0)
+ {
+ SetStringParameter(SDK_ENDPOINT, endpoint);
+ }
+ else
+ {
+ SetStringParameter(SDK_ENDPOINT, Aws::String(Aws::Http::SchemeMapper::ToString(scheme)) + "://" + endpoint);
+ }
+ }
+
+ bool StringEndsWith(const Aws::String& str, const Aws::String& suffix)
+ {
+ if (suffix.size() > str.size())
+ return false;
+ return std::equal(suffix.rbegin(), suffix.rend(), str.rbegin());
+ }
+
+ void BuiltInParameters::SetFromClientConfiguration(const Client::ClientConfiguration& config)
+ {
+ bool forceFIPS = false;
+ static const char* AWS_REGION = "Region";
+ if (!config.region.empty()) {
+ static const char* FIPS_PREFIX = "fips-";
+ static const char* FIPS_SUFFIX = "-fips";
+ if (config.region.rfind(FIPS_PREFIX, 0) == 0) {
+ // Backward compatibility layer for code hacking previous SDK version
+ Aws::String regionOverride = config.region.substr(sizeof(FIPS_PREFIX) - 1);
+ forceFIPS = true;
+ SetStringParameter(AWS_REGION, regionOverride);
+ } else if (StringEndsWith(config.region, FIPS_SUFFIX)) {
+ Aws::String regionOverride = config.region.substr(0, config.region.size() - sizeof(FIPS_SUFFIX) - 1);
+ forceFIPS = true;
+ SetStringParameter(AWS_REGION, regionOverride);
+ } else {
+ SetStringParameter(AWS_REGION, config.region);
+ }
+ }
+
+ static const char* AWS_USE_FIPS = "UseFIPS";
+ SetBooleanParameter(AWS_USE_FIPS, config.useFIPS || forceFIPS);
+
+ static const char* AWS_USE_DUAL_STACK = "UseDualStack";
+ SetBooleanParameter(AWS_USE_DUAL_STACK, config.useDualStack);
+
+ if (!config.endpointOverride.empty()) {
+ OverrideEndpoint(config.endpointOverride, config.scheme);
+
+ if (config.region.empty()) {
+ AWS_LOGSTREAM_WARN(ENDPOINT_BUILTIN_LOG_TAG,
+ "Endpoint is overridden but region is not set. "
+ "Region is required my many endpoint rule sets to resolve the endpoint. "
+ "And it is required to compute an aws signature.");
+ SetStringParameter(AWS_REGION, "region-not-set"); // dummy endpoint resolution parameter
+ }
+ }
+ }
+
+ void BuiltInParameters::SetFromClientConfiguration(const Client::GenericClientConfiguration<false>& config)
+ {
+ return SetFromClientConfiguration(static_cast<const Client::ClientConfiguration&>(config));
+ }
+
+ void BuiltInParameters::SetFromClientConfiguration(const Client::GenericClientConfiguration<true>& config)
+ {
+ SetFromClientConfiguration(static_cast<const Client::ClientConfiguration&>(config));
+ }
+
+ const BuiltInParameters::EndpointParameter& BuiltInParameters::GetParameter(const Aws::String& name) const
+ {
+ const auto foundIt = std::find_if(m_params.begin(), m_params.end(),
+ [name](const BuiltInParameters::EndpointParameter& item)
+ {
+ return item.GetName() == name;
+ });
+
+ if (foundIt != m_params.end())
+ {
+ return *foundIt;
+ }
+ else
+ {
+ static const BuiltInParameters::EndpointParameter BUILTIN_NOT_FOUND_PARAMETER("PARAMETER_NOT_SET", false, EndpointParameter::ParameterOrigin::CLIENT_CONTEXT);
+ return BUILTIN_NOT_FOUND_PARAMETER;
+ }
+ }
+
+ void BuiltInParameters::SetParameter(EndpointParameter param)
+ {
+ const auto foundIt = std::find_if(m_params.begin(), m_params.end(),
+ [param](const BuiltInParameters::EndpointParameter& item)
+ {
+ return item.GetName() == param.GetName();
+ });
+
+ if (foundIt != m_params.end())
+ {
+ m_params.erase(foundIt);
+ }
+ m_params.emplace_back(std::move(param));
+ }
+
+ void BuiltInParameters::SetStringParameter(Aws::String name, Aws::String value)
+ {
+ return SetParameter(EndpointParameter(std::move(name), std::move(value), EndpointParameter::ParameterOrigin::BUILT_IN));
+ }
+
+ void BuiltInParameters::SetBooleanParameter(Aws::String name, bool value)
+ {
+ return SetParameter(EndpointParameter(std::move(name), value, EndpointParameter::ParameterOrigin::BUILT_IN));
+ }
+
+ const Aws::Vector<BuiltInParameters::EndpointParameter>& BuiltInParameters::GetAllParameters() const
+ {
+ return m_params;
+ }
+} // namespace Endpoint
+} // namespace Aws \ No newline at end of file
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/ClientContextParameters.cpp b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/ClientContextParameters.cpp
new file mode 100644
index 0000000000..cdff71f669
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/ClientContextParameters.cpp
@@ -0,0 +1,61 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#include <aws/core/endpoint/ClientContextParameters.h>
+
+namespace Aws
+{
+namespace Endpoint
+{
+ const ClientContextParameters::EndpointParameter& ClientContextParameters::GetParameter(const Aws::String& name) const
+ {
+ const auto foundIt = std::find_if(m_params.begin(), m_params.end(),
+ [name](const ClientContextParameters::EndpointParameter& item)
+ {
+ return item.GetName() == name;
+ });
+
+ if (foundIt != m_params.end())
+ {
+ return *foundIt;
+ }
+ else
+ {
+ static const ClientContextParameters::EndpointParameter CTX_NOT_FOUND_PARAMETER("PARAMETER_NOT_SET", false, EndpointParameter::ParameterOrigin::CLIENT_CONTEXT);
+ return CTX_NOT_FOUND_PARAMETER;
+ }
+ }
+
+ void ClientContextParameters::SetParameter(EndpointParameter param)
+ {
+ const auto foundIt = std::find_if(m_params.begin(), m_params.end(),
+ [param](const ClientContextParameters::EndpointParameter& item)
+ {
+ return item.GetName() == param.GetName();
+ });
+
+ if (foundIt != m_params.end())
+ {
+ m_params.erase(foundIt);
+ }
+ m_params.emplace_back(std::move(param));
+ }
+
+ void ClientContextParameters::SetStringParameter(Aws::String name, Aws::String value)
+ {
+ return SetParameter(EndpointParameter(std::move(name), std::move(value), EndpointParameter::ParameterOrigin::CLIENT_CONTEXT));
+ }
+
+ void ClientContextParameters::SetBooleanParameter(Aws::String name, bool value)
+ {
+ return SetParameter(EndpointParameter(std::move(name), value, EndpointParameter::ParameterOrigin::CLIENT_CONTEXT));
+ }
+
+ const Aws::Vector<ClientContextParameters::EndpointParameter>& ClientContextParameters::GetAllParameters() const
+ {
+ return m_params;
+ }
+} // namespace Endpoint
+} // namespace Aws \ No newline at end of file
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/DefaultEndpointProvider.cpp b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/DefaultEndpointProvider.cpp
new file mode 100644
index 0000000000..58370cd425
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/DefaultEndpointProvider.cpp
@@ -0,0 +1,236 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#include <aws/core/endpoint/DefaultEndpointProvider.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <aws/crt/Api.h>
+
+namespace Aws
+{
+namespace Endpoint
+{
+
+/**
+ * Export endpoint provider symbols from DLL
+ */
+template class AWS_CORE_API DefaultEndpointProvider<Aws::Client::GenericClientConfiguration<false>,
+ Aws::Endpoint::BuiltInParameters,
+ Aws::Endpoint::ClientContextParameters>;
+
+char CharToDec(const char c)
+{
+ if(c >= '0' && c <= '9')
+ return c - '0';
+ if(c >= 'A' && c <= 'F')
+ return c - 'A' + 10;
+ if(c >= 'a' && c <= 'f')
+ return c - 'a' + 10;
+ return 0;
+}
+
+Aws::String PercentDecode(Aws::String inputString)
+{
+ if (inputString.find_first_of("%") == Aws::String::npos)
+ {
+ return inputString;
+ }
+ Aws::String result;
+ result.reserve(inputString.size());
+
+ bool percentFound = false;
+ char firstOctet = 0;
+ char secondOctet = 0;
+ for(size_t i = 0; i < inputString.size(); ++i)
+ {
+ const char currentChar = inputString[i];
+ if ('%' == currentChar)
+ {
+ if (percentFound)
+ {
+ // not percent-encoded string
+ result += currentChar;
+ }
+ percentFound = true;
+ continue;
+ }
+
+ if (percentFound)
+ {
+ if ((currentChar >= '0' && currentChar <= '9') ||
+ (currentChar >= 'A' && currentChar <= 'F') ||
+ (currentChar >= 'a' && currentChar <= 'f'))
+ {
+ if(!firstOctet)
+ {
+ firstOctet = currentChar;
+ continue;
+ }
+ if(!secondOctet)
+ {
+ secondOctet = currentChar;
+ char encodedChar = CharToDec(firstOctet) * 16 + CharToDec(secondOctet);
+ result += encodedChar;
+
+ percentFound = false;
+ firstOctet = 0;
+ secondOctet = 0;
+ continue;
+ }
+ } else {
+ // Non-percent encoded sequence
+ result += '%';
+ if(!firstOctet)
+ result += firstOctet;
+ result += currentChar;
+ percentFound = false;
+ firstOctet = 0;
+ secondOctet = 0;
+ continue;
+ }
+ }
+
+ if ('+' == currentChar)
+ {
+ result += ' ';
+ continue;
+ }
+ result += currentChar;
+ }
+ return result;
+}
+
+AWS_CORE_API ResolveEndpointOutcome
+ResolveEndpointDefaultImpl(const Aws::Crt::Endpoints::RuleEngine& ruleEngine,
+ const EndpointParameters& builtInParameters,
+ const EndpointParameters& clientContextParameters,
+ const EndpointParameters& endpointParameters)
+{
+ if(!ruleEngine) {
+ AWS_LOGSTREAM_FATAL(DEFAULT_ENDPOINT_PROVIDER_TAG, "Invalid CRT Rule Engine state");
+ return ResolveEndpointOutcome(
+ Aws::Client::AWSError<Aws::Client::CoreErrors>(
+ Aws::Client::CoreErrors::INTERNAL_FAILURE,
+ "",
+ "CRT Endpoint rule engine is not initialized",
+ false/*retryable*/));
+ }
+
+ Aws::Crt::Endpoints::RequestContext crtRequestCtx;
+
+ const Aws::Vector<std::reference_wrapper<const EndpointParameters>> allParameters
+ = {std::cref(builtInParameters), std::cref(clientContextParameters), std::cref(endpointParameters)};
+
+ for (const auto& parameterClass : allParameters)
+ {
+ for(const auto& parameter : parameterClass.get())
+ {
+ if(EndpointParameter::ParameterType::BOOLEAN == parameter.GetStoredType())
+ {
+ AWS_LOGSTREAM_TRACE(DEFAULT_ENDPOINT_PROVIDER_TAG, "Endpoint bool eval parameter: " << parameter.GetName() << " = " << parameter.GetBoolValueNoCheck());
+ crtRequestCtx.AddBoolean(Aws::Crt::ByteCursorFromCString(parameter.GetName().c_str()), parameter.GetBoolValueNoCheck());
+ }
+ else if(EndpointParameter::ParameterType::STRING == parameter.GetStoredType())
+ {
+ AWS_LOGSTREAM_TRACE(DEFAULT_ENDPOINT_PROVIDER_TAG, "Endpoint str eval parameter: " << parameter.GetName() << " = " << parameter.GetStrValueNoCheck());
+ crtRequestCtx.AddString(Aws::Crt::ByteCursorFromCString(parameter.GetName().c_str()), Aws::Crt::ByteCursorFromCString(parameter.GetStrValueNoCheck().c_str()));
+ }
+ else
+ {
+ return ResolveEndpointOutcome(
+ Aws::Client::AWSError<Aws::Client::CoreErrors>(
+ Aws::Client::CoreErrors::INVALID_QUERY_PARAMETER,
+ "",
+ "Invalid endpoint parameter type for parameter " + parameter.GetName(),
+ false/*retryable*/));
+ }
+ }
+ }
+
+ auto resolved = ruleEngine.Resolve(crtRequestCtx);
+
+ if(resolved.has_value())
+ {
+ if(resolved->IsError())
+ {
+ auto crtError = resolved->GetError();
+ Aws::String sdkCrtError = crtError ? Aws::String(crtError->begin(), crtError->end()) :
+ "CRT Rule engine resolution resulted in an unknown error";
+ return ResolveEndpointOutcome(
+ Aws::Client::AWSError<Aws::Client::CoreErrors>(
+ Aws::Client::CoreErrors::INVALID_PARAMETER_COMBINATION,
+ "",
+ sdkCrtError,
+ false/*retryable*/));
+ }
+ else if(resolved->IsEndpoint() && resolved->GetUrl())
+ {
+ Aws::Endpoint::AWSEndpoint endpoint;
+ const auto crtUrl = resolved->GetUrl();
+ Aws::String sdkCrtUrl = Aws::String(crtUrl->begin(), crtUrl->end());
+ AWS_LOGSTREAM_DEBUG(DEFAULT_ENDPOINT_PROVIDER_TAG, "Endpoint rules engine evaluated the endpoint: " << sdkCrtUrl);
+ endpoint.SetURL(PercentDecode(std::move(sdkCrtUrl)));
+
+ // Transform attributes
+ // Each attribute consist of properties, hence converting CRT properties to SDK attributes
+ const auto crtProps = resolved->GetProperties();
+ if (crtProps && crtProps->size() > 2) {
+ Aws::String sdkCrtProps = crtProps ? Aws::String(crtProps->begin(), crtProps->end()) : "";
+ AWS_LOGSTREAM_TRACE(DEFAULT_ENDPOINT_PROVIDER_TAG, "Endpoint rules evaluated props: " << sdkCrtProps);
+
+ Internal::Endpoint::EndpointAttributes epAttributes = Internal::Endpoint::EndpointAttributes::BuildEndpointAttributesFromJson(
+ sdkCrtProps);
+
+ endpoint.SetAttributes(std::move(epAttributes));
+ }
+
+ // transform headers
+ const auto crtHeaders = resolved->GetHeaders();
+ if (crtHeaders)
+ {
+ Aws::UnorderedMap<Aws::String, Aws::String> sdkHeaders;
+ for (const auto& header: *crtHeaders)
+ {
+ Aws::String key(header.first.begin(), header.first.end());
+ Aws::String value;
+ for (const auto& crtHeaderValue : header.second)
+ {
+ if(!value.empty()) {
+ value.insert(value.end(), ';');
+ }
+ value.insert(value.end(), crtHeaderValue.begin(), crtHeaderValue.end());
+ }
+ sdkHeaders.emplace(std::move(key), std::move(value));
+ }
+
+ endpoint.SetHeaders(std::move(sdkHeaders));
+ }
+
+ return ResolveEndpointOutcome(std::move(endpoint));
+ }
+ else
+ {
+ return ResolveEndpointOutcome(
+ Aws::Client::AWSError<Aws::Client::CoreErrors>(
+ Aws::Client::CoreErrors::INVALID_QUERY_PARAMETER,
+ "",
+ "Invalid AWS CRT RuleEngine state",
+ false/*retryable*/));
+ }
+ }
+
+ auto errCode = Aws::Crt::LastError();
+ AWS_LOGSTREAM_DEBUG(DEFAULT_ENDPOINT_PROVIDER_TAG, "ERROR: Rule engine has failed to evaluate the endpoint: " << errCode << " " << Aws::Crt::ErrorDebugString(errCode));
+
+ return ResolveEndpointOutcome(
+ Aws::Client::AWSError<Aws::Client::CoreErrors>(
+ Aws::Client::CoreErrors::INVALID_QUERY_PARAMETER,
+ "",
+ "Failed to evaluate the endpoint: null output from AWS CRT RuleEngine",
+ false/*retryable*/));
+
+}
+
+} // namespace Endpoint
+} // namespace Aws \ No newline at end of file
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/EndpointProviderBase.cpp b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/EndpointProviderBase.cpp
new file mode 100644
index 0000000000..0928186839
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/EndpointProviderBase.cpp
@@ -0,0 +1,20 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#include <aws/core/endpoint/EndpointProviderBase.h>
+
+namespace Aws
+{
+namespace Endpoint
+{
+/**
+ * Export endpoint provider symbols from DLL
+ */
+template class AWS_CORE_API EndpointProviderBase<Aws::Client::GenericClientConfiguration<false>,
+ Aws::Endpoint::BuiltInParameters,
+ Aws::Endpoint::ClientContextParameters>;
+
+} // namespace Endpoint
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/internal/AWSEndpointAttribute.cpp b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/internal/AWSEndpointAttribute.cpp
new file mode 100644
index 0000000000..5c295bb132
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/endpoint/internal/AWSEndpointAttribute.cpp
@@ -0,0 +1,82 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#include <aws/core/endpoint/internal/AWSEndpointAttribute.h>
+#include <aws/core/utils/logging/LogMacros.h>
+
+static const char ENDPOINT_AUTH_SCHEME_TAG[] = "EndpointAuthScheme::BuildEndpointAuthSchemeFromJson";
+
+Aws::String CrtToSdkSignerName(const Aws::String& crtSignerName)
+{
+ Aws::String sdkSigner = "NullSigner";
+ if (crtSignerName == "sigv4") {
+ sdkSigner = "SignatureV4";
+ } else if (crtSignerName == "sigv4a") {
+ sdkSigner = "AsymmetricSignatureV4";
+ } else if (crtSignerName == "none") {
+ sdkSigner = "NullSigner";
+ } else if (crtSignerName == "bearer") {
+ sdkSigner = "Bearer";
+ } else {
+ AWS_LOG_WARN(ENDPOINT_AUTH_SCHEME_TAG, (Aws::String("Unknown Endpoint authSchemes signer: ") + crtSignerName).c_str());
+ }
+
+ return sdkSigner;
+}
+
+Aws::Internal::Endpoint::EndpointAttributes
+Aws::Internal::Endpoint::EndpointAttributes::BuildEndpointAttributesFromJson(const Aws::String& iJsonStr)
+{
+ Aws::Internal::Endpoint::EndpointAttributes attributes;
+ Aws::Internal::Endpoint::EndpointAuthScheme& authScheme = attributes.authScheme;
+
+ Utils::Json::JsonValue jsonObject(iJsonStr);
+ if (jsonObject.WasParseSuccessful())
+ {
+ Aws::Map<Aws::String, Utils::Json::JsonView> jsonMap = jsonObject.View().GetAllObjects();
+ for (const auto& mapItemAttribute : jsonMap)
+ {
+ if (mapItemAttribute.first == "authSchemes" && mapItemAttribute.second.IsListType()) {
+ Aws::Utils::Array<Utils::Json::JsonView> jsonAuthSchemeArray = mapItemAttribute.second.AsArray();
+
+ for (size_t arrayIdx = 0; arrayIdx < jsonAuthSchemeArray.GetLength(); ++arrayIdx)
+ {
+ const Utils::Json::JsonView& property = jsonAuthSchemeArray.GetItem(arrayIdx);
+ for (const auto& mapItemProperty : property.GetAllObjects())
+ {
+ if (mapItemProperty.first == "name") {
+ authScheme.SetName(CrtToSdkSignerName(mapItemProperty.second.AsString()));
+ } else if (mapItemProperty.first == "signingName") {
+ authScheme.SetSigningName(mapItemProperty.second.AsString());
+ } else if (mapItemProperty.first == "signingRegion") {
+ authScheme.SetSigningRegion(mapItemProperty.second.AsString());
+ } else if (mapItemProperty.first == "signingRegionSet") {
+ Aws::Utils::Array<Utils::Json::JsonView> signingRegionArray = mapItemProperty.second.AsArray();
+ if (signingRegionArray.GetLength() != 1) {
+ AWS_LOG_WARN(ENDPOINT_AUTH_SCHEME_TAG,
+ "Signing region set size is not equal to 1");
+ }
+ if (signingRegionArray.GetLength() > 0) {
+ authScheme.SetSigningRegionSet(signingRegionArray.GetItem(0).AsString());
+ }
+ } else if (mapItemProperty.first == "disableDoubleEncoding") {
+ authScheme.SetDisableDoubleEncoding(mapItemProperty.second.AsBool());
+ } else {
+ AWS_LOG_WARN(ENDPOINT_AUTH_SCHEME_TAG, Aws::String("Unknown Endpoint authSchemes attribute property: " + mapItemProperty.first).c_str());
+ }
+ }
+ }
+ } else {
+ AWS_LOG_WARN(ENDPOINT_AUTH_SCHEME_TAG, Aws::String("Unknown Endpoint Attribute: " + mapItemAttribute.first).c_str());
+ }
+ }
+ }
+ else
+ {
+ AWS_LOGSTREAM_ERROR(ENDPOINT_AUTH_SCHEME_TAG, "Json Parse failed with message: " << jsonObject.GetErrorMessage());
+ }
+
+ return attributes;
+} \ No newline at end of file