aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/source/S3Endpoint.cpp
diff options
context:
space:
mode:
authorDevtools Arcadia <arcadia-devtools@yandex-team.ru>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/source/S3Endpoint.cpp
downloadydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/source/S3Endpoint.cpp')
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/source/S3Endpoint.cpp133
1 files changed, 133 insertions, 0 deletions
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/source/S3Endpoint.cpp b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/source/S3Endpoint.cpp
new file mode 100644
index 0000000000..c81556085f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/source/S3Endpoint.cpp
@@ -0,0 +1,133 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#include <aws/s3/S3Endpoint.h>
+#include <aws/core/utils/memory/stl/AWSStringStream.h>
+#include <aws/core/utils/HashingUtils.h>
+
+using namespace Aws;
+using namespace Aws::S3;
+
+namespace Aws
+{
+namespace S3
+{
+namespace S3Endpoint
+{
+ static const int CN_NORTH_1_HASH = Aws::Utils::HashingUtils::HashString("cn-north-1");
+ static const int CN_NORTHWEST_1_HASH = Aws::Utils::HashingUtils::HashString("cn-northwest-1");
+ static const int US_ISO_EAST_1_HASH = Aws::Utils::HashingUtils::HashString("us-iso-east-1");
+ static const int US_ISOB_EAST_1_HASH = Aws::Utils::HashingUtils::HashString("us-isob-east-1");
+
+ static const int FIPS_US_GOV_WEST_1_HASH = Aws::Utils::HashingUtils::HashString("fips-us-gov-west-1");
+ static const int US_GOV_WEST_1_HASH = Aws::Utils::HashingUtils::HashString("us-gov-west-1");
+ static const int US_GOV_EAST_1_HASH = Aws::Utils::HashingUtils::HashString("us-gov-east-1");
+ static const int US_EAST_1_HASH = Aws::Utils::HashingUtils::HashString("us-east-1");
+ static const int AWS_GLOBAL_HASH = Aws::Utils::HashingUtils::HashString("aws-global");
+
+ Aws::String ForAccessPointArn(const S3ARN& arn, const Aws::String& regionNameOverride, bool useDualStack)
+ {
+ const Aws::String& region = regionNameOverride.empty() ? arn.GetRegion() : regionNameOverride;
+ auto hash = Aws::Utils::HashingUtils::HashString(region.c_str());
+
+ Aws::StringStream ss;
+ ss << arn.GetResourceId() << "-" << arn.GetAccountId() << ".s3-accesspoint.";
+ if (useDualStack)
+ {
+ ss << "dualstack.";
+ }
+ ss << region << "." << "amazonaws.com";
+
+ if (hash == CN_NORTH_1_HASH || hash == CN_NORTHWEST_1_HASH)
+ {
+ ss << ".cn";
+ }
+
+ return ss.str();
+ }
+
+ Aws::String ForOutpostsArn(const S3ARN& arn, const Aws::String& regionNameOverride)
+ {
+ const Aws::String& region = regionNameOverride.empty() ? arn.GetRegion() : regionNameOverride;
+ auto hash = Aws::Utils::HashingUtils::HashString(region.c_str());
+
+ Aws::StringStream ss;
+ ss << arn.GetSubResourceId() << "-" << arn.GetAccountId() << "." << arn.GetResourceId() << ".s3-outposts." << region << "." << "amazonaws.com";
+
+ if (hash == CN_NORTH_1_HASH || hash == CN_NORTHWEST_1_HASH)
+ {
+ ss << ".cn";
+ }
+
+ return ss.str();
+ }
+
+ Aws::String ForRegion(const Aws::String& regionName, bool useDualStack, bool USEast1UseRegionalEndpoint)
+ {
+ auto hash = Aws::Utils::HashingUtils::HashString(regionName.c_str());
+
+ if(!useDualStack)
+ {
+ if(hash == FIPS_US_GOV_WEST_1_HASH)
+ {
+ return "s3-fips-us-gov-west-1.amazonaws.com";
+ }
+ if(hash == US_GOV_WEST_1_HASH)
+ {
+ return "s3.us-gov-west-1.amazonaws.com";
+ }
+ if(hash == US_GOV_EAST_1_HASH)
+ {
+ return "s3.us-gov-east-1.amazonaws.com";
+ }
+ if (hash == AWS_GLOBAL_HASH)
+ {
+ return "s3.amazonaws.com";
+ }
+ if(hash == US_EAST_1_HASH)
+ {
+ if (USEast1UseRegionalEndpoint)
+ {
+ return "s3.us-east-1.amazonaws.com";
+ }
+ else
+ {
+ return "s3.amazonaws.com";
+ }
+ }
+ }
+ Aws::StringStream ss;
+ ss << "s3" << ".";
+
+ if(useDualStack)
+ {
+ ss << "dualstack.";
+ }
+
+ ss << regionName;
+
+ if (hash == CN_NORTH_1_HASH || hash == CN_NORTHWEST_1_HASH)
+ {
+ ss << ".amazonaws.com.cn";
+ }
+ else if (hash == US_ISO_EAST_1_HASH)
+ {
+ ss << ".c2s.ic.gov";
+ }
+ else if (hash == US_ISOB_EAST_1_HASH)
+ {
+ ss << ".sc2s.sgov.gov";
+ }
+ else
+ {
+ ss << ".amazonaws.com";
+ }
+
+ return ss.str();
+ }
+
+} // namespace S3Endpoint
+} // namespace S3
+} // namespace Aws