aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/client/AWSUrlPresigner.cpp
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/client/AWSUrlPresigner.cpp
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/client/AWSUrlPresigner.cpp')
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/client/AWSUrlPresigner.cpp236
1 files changed, 236 insertions, 0 deletions
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/client/AWSUrlPresigner.cpp b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/client/AWSUrlPresigner.cpp
new file mode 100644
index 0000000000..a0bc808838
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/client/AWSUrlPresigner.cpp
@@ -0,0 +1,236 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#include <aws/core/client/AWSUrlPresigner.h>
+#include <aws/core/client/AWSClient.h>
+#include <aws/core/http/HttpClientFactory.h>
+
+namespace Aws
+{
+namespace Client
+{
+
+using HttpRequest = Http::HttpRequest;
+using HttpMethod = Http::HttpMethod;
+using URI = Http::URI;
+
+
+AWSUrlPresigner::AWSUrlPresigner(const AWSClient& client)
+ : m_awsClient(client)
+{}
+
+
+Aws::Client::AWSAuthSigner* AWSUrlPresigner::GetSignerByName(const char* name) const
+{
+ return m_awsClient.GetSignerByName(name);
+}
+
+std::shared_ptr<Aws::Http::HttpRequest>
+ConvertToRequestForPresigning(const Aws::AmazonWebServiceRequest& request,
+ const Aws::Http::URI& uri,
+ Aws::Http::HttpMethod method,
+ const Aws::Http::QueryStringParameterCollection& extraParams)
+{
+ Aws::Http::URI uriCopy = uri;
+ request.PutToPresignedUrl(uriCopy);
+ std::shared_ptr<HttpRequest> httpRequest = CreateHttpRequest(uriCopy, method, Aws::Utils::Stream::DefaultResponseStreamFactoryMethod);
+
+ for (auto& param : extraParams)
+ {
+ httpRequest->AddQueryStringParameter(param.first.c_str(), param.second);
+ }
+
+ return httpRequest;
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const URI& uri,
+ HttpMethod method,
+ long long expirationInSeconds) const
+{
+ const char* regionOverride = nullptr;
+ const char* serviceNameOverride = nullptr;
+ const char* signerName = Aws::Auth::SIGV4_SIGNER;
+ return GeneratePresignedUrl(uri, method, regionOverride, serviceNameOverride, signerName, expirationInSeconds);
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const URI& uri,
+ HttpMethod method,
+ const Aws::Http::HeaderValueCollection& customizedHeaders,
+ long long expirationInSeconds) const
+{
+ const char* regionOverride = nullptr;
+ const char* serviceNameOverride = nullptr;
+ const char* signerName = Aws::Auth::SIGV4_SIGNER;
+ return GeneratePresignedUrl(uri, method, regionOverride, serviceNameOverride, signerName, customizedHeaders, expirationInSeconds);
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const URI& uri,
+ HttpMethod method,
+ const char* regionOverride,
+ long long expirationInSeconds) const
+{
+ const char* serviceNameOverride = nullptr;
+ const char* signerName = Aws::Auth::SIGV4_SIGNER;
+ return GeneratePresignedUrl(uri, method, regionOverride, serviceNameOverride, signerName, expirationInSeconds);
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const URI& uri,
+ HttpMethod method,
+ const char* regionOverride,
+ const Aws::Http::HeaderValueCollection& customizedHeaders,
+ long long expirationInSeconds) const
+{
+ const char* serviceNameOverride = nullptr;
+ const char* signerName = Aws::Auth::SIGV4_SIGNER;
+ return GeneratePresignedUrl(uri, method, regionOverride, serviceNameOverride, signerName, customizedHeaders, expirationInSeconds);
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const Aws::Http::URI& uri,
+ Aws::Http::HttpMethod method,
+ const char* regionOverride,
+ const char* serviceNameOverride,
+ long long expirationInSeconds) const
+{
+ const char* signerName = Aws::Auth::SIGV4_SIGNER;
+ return GeneratePresignedUrl(uri, method, regionOverride, serviceNameOverride, signerName, expirationInSeconds);
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const Aws::Http::URI& uri,
+ Aws::Http::HttpMethod method,
+ const char* regionOverride,
+ const char* serviceNameOverride,
+ const Aws::Http::HeaderValueCollection& customizedHeaders,
+ long long expirationInSeconds) const
+{
+ const char* signerName = Aws::Auth::SIGV4_SIGNER;
+ return GeneratePresignedUrl(uri, method, regionOverride, serviceNameOverride, signerName, customizedHeaders, expirationInSeconds);
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const Aws::Http::URI& uri,
+ Aws::Http::HttpMethod method,
+ const char* regionOverride,
+ const char* serviceNameOverride,
+ const char* signerName,
+ long long expirationInSeconds) const
+{
+ const Aws::Http::HeaderValueCollection& customizedHeaders = {};
+ return GeneratePresignedUrl(uri, method, regionOverride, serviceNameOverride, signerName, customizedHeaders, expirationInSeconds);
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const Aws::Http::URI& uri,
+ Aws::Http::HttpMethod method,
+ const char* region,
+ const char* serviceName,
+ const char* signerName,
+ const Aws::Http::HeaderValueCollection& customizedHeaders,
+ long long expirationInSeconds) const
+{
+ /* a real method implementation */
+ if (!signerName) {
+ signerName = Aws::Auth::SIGV4_SIGNER;
+ }
+ std::shared_ptr<HttpRequest> request = CreateHttpRequest(uri, method, Aws::Utils::Stream::DefaultResponseStreamFactoryMethod);
+ for (const auto& it: customizedHeaders)
+ {
+ request->SetHeaderValue(it.first.c_str(), it.second);
+ }
+ auto signer = GetSignerByName(signerName);
+ if (signer->PresignRequest(*request, region, serviceName, expirationInSeconds))
+ {
+ return request->GetURIString();
+ }
+
+ return {};
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const Aws::Endpoint::AWSEndpoint& endpoint,
+ Aws::Http::HttpMethod method /* = Http::HttpMethod::HTTP_POST */,
+ const Aws::Http::HeaderValueCollection& customizedHeaders /* = {} */,
+ uint64_t expirationInSeconds /* = 0 */,
+ const char* signerName /* = Aws::Auth::SIGV4_SIGNER */,
+ const char* signerRegionOverride /* = nullptr */,
+ const char* signerServiceNameOverride /* = nullptr */) const
+{
+ const Aws::Http::URI& uri = endpoint.GetURI();
+ if (endpoint.GetAttributes()) {
+ signerName = endpoint.GetAttributes()->authScheme.GetName().c_str();
+ if (endpoint.GetAttributes()->authScheme.GetSigningRegion()) {
+ signerRegionOverride = endpoint.GetAttributes()->authScheme.GetSigningRegion()->c_str();
+ }
+ if (endpoint.GetAttributes()->authScheme.GetSigningRegionSet()) {
+ signerRegionOverride = endpoint.GetAttributes()->authScheme.GetSigningRegionSet()->c_str();
+ }
+ if (endpoint.GetAttributes()->authScheme.GetSigningName()) {
+ signerServiceNameOverride = endpoint.GetAttributes()->authScheme.GetSigningName()->c_str();
+ }
+ }
+
+ return GeneratePresignedUrl(uri, method, signerRegionOverride, signerServiceNameOverride, signerName, customizedHeaders, expirationInSeconds);
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const Aws::AmazonWebServiceRequest& request,
+ const Aws::Http::URI& uri,
+ Aws::Http::HttpMethod method,
+ const char* regionOverride,
+ const Aws::Http::QueryStringParameterCollection& extraParams,
+ long long expirationInSeconds) const
+{
+ const char* serviceNameOverride = nullptr;
+ const char* signerName = Aws::Auth::SIGV4_SIGNER;
+
+ return GeneratePresignedUrl(request, uri, method, regionOverride, serviceNameOverride, signerName, extraParams, expirationInSeconds);
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const Aws::AmazonWebServiceRequest& request,
+ const Aws::Http::URI& uri,
+ Aws::Http::HttpMethod method,
+ const char* regionOverride,
+ const char* serviceNameOverride,
+ const char* signerName,
+ const Aws::Http::QueryStringParameterCollection& extraParams,
+ long long expirationInSeconds) const
+{
+ /* a real method implementation */
+ if (!signerName) {
+ signerName = Aws::Auth::SIGV4_SIGNER;
+ }
+ std::shared_ptr<HttpRequest> httpRequest =
+ ConvertToRequestForPresigning(request, uri, method, extraParams);
+ auto signer = GetSignerByName(signerName);
+ if (signer->PresignRequest(*httpRequest, regionOverride, serviceNameOverride, expirationInSeconds))
+ {
+ return httpRequest->GetURIString();
+ }
+
+ return {};
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const Aws::AmazonWebServiceRequest& request,
+ const Aws::Http::URI& uri,
+ Aws::Http::HttpMethod method,
+ const char* regionOverride,
+ const char* serviceNameOverride,
+ const Aws::Http::QueryStringParameterCollection& extraParams,
+ long long expirationInSeconds) const
+{
+ const char* signerName = Aws::Auth::SIGV4_SIGNER;
+ return GeneratePresignedUrl(request, uri, method, regionOverride, serviceNameOverride, signerName, extraParams, expirationInSeconds);
+}
+
+Aws::String AWSUrlPresigner::GeneratePresignedUrl(const Aws::AmazonWebServiceRequest& request,
+ const Aws::Http::URI& uri,
+ Aws::Http::HttpMethod method,
+ const Aws::Http::QueryStringParameterCollection& extraParams,
+ long long expirationInSeconds) const
+{
+ const char* regionOverride = nullptr;
+ const char* serviceNameOverride = nullptr;
+ const char* signerName = Aws::Auth::SIGV4_SIGNER;
+
+ return GeneratePresignedUrl(request, uri, method, regionOverride, serviceNameOverride, signerName, extraParams, expirationInSeconds);
+}
+
+} // namespace Client
+} // namespace Aws \ No newline at end of file