aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/http/HttpRequest.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/http/HttpRequest.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/http/HttpRequest.cpp')
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/http/HttpRequest.cpp105
1 files changed, 78 insertions, 27 deletions
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/http/HttpRequest.cpp b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/http/HttpRequest.cpp
index 95cb626c22..1f109c86a9 100644
--- a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/http/HttpRequest.cpp
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-core/source/http/HttpRequest.cpp
@@ -4,37 +4,88 @@
*/
#include <aws/core/http/HttpRequest.h>
-
+#include <aws/core/utils/memory/stl/AWSStringStream.h>
+#include <aws/http/request_response.h>
+#include <aws/crt/Types.h>
+#include <aws/crt/http/HttpRequestResponse.h>
namespace Aws
{
-namespace Http
-{
+ namespace Http
+ {
-const char DATE_HEADER[] = "date";
-const char AWS_DATE_HEADER[] = "X-Amz-Date";
-const char AWS_SECURITY_TOKEN[] = "X-Amz-Security-Token";
-const char ACCEPT_HEADER[] = "accept";
-const char ACCEPT_CHAR_SET_HEADER[] = "accept-charset";
-const char ACCEPT_ENCODING_HEADER[] = "accept-encoding";
-const char AUTHORIZATION_HEADER[] = "authorization";
-const char AWS_AUTHORIZATION_HEADER[] = "authorization";
-const char COOKIE_HEADER[] = "cookie";
-const char CONTENT_LENGTH_HEADER[] = "content-length";
-const char CONTENT_TYPE_HEADER[] = "content-type";
-const char TRANSFER_ENCODING_HEADER[] = "transfer-encoding";
-const char USER_AGENT_HEADER[] = "user-agent";
-const char VIA_HEADER[] = "via";
-const char HOST_HEADER[] = "host";
-const char AMZ_TARGET_HEADER[] = "x-amz-target";
-const char X_AMZ_EXPIRES_HEADER[] = "X-Amz-Expires";
-const char CONTENT_MD5_HEADER[] = "content-md5";
-const char API_VERSION_HEADER[] = "x-amz-api-version";
-const char SDK_INVOCATION_ID_HEADER[] = "amz-sdk-invocation-id";
-const char SDK_REQUEST_HEADER[] = "amz-sdk-request";
-const char CHUNKED_VALUE[] = "chunked";
+ const char DATE_HEADER[] = "date";
+ const char AWS_DATE_HEADER[] = "X-Amz-Date";
+ const char AWS_SECURITY_TOKEN[] = "X-Amz-Security-Token";
+ const char ACCEPT_HEADER[] = "accept";
+ const char ACCEPT_CHAR_SET_HEADER[] = "accept-charset";
+ const char ACCEPT_ENCODING_HEADER[] = "accept-encoding";
+ const char AUTHORIZATION_HEADER[] = "authorization";
+ const char AWS_AUTHORIZATION_HEADER[] = "authorization";
+ const char COOKIE_HEADER[] = "cookie";
+ const char DECODED_CONTENT_LENGTH_HEADER[] = "x-amz-decoded-content-length";
+ const char CONTENT_LENGTH_HEADER[] = "content-length";
+ const char CONTENT_TYPE_HEADER[] = "content-type";
+ const char CONTENT_ENCODING_HEADER[] = "content-encoding";
+ const char TRANSFER_ENCODING_HEADER[] = "transfer-encoding";
+ const char USER_AGENT_HEADER[] = "user-agent";
+ const char VIA_HEADER[] = "via";
+ const char HOST_HEADER[] = "host";
+ const char AMZ_TARGET_HEADER[] = "x-amz-target";
+ const char X_AMZ_EXPIRES_HEADER[] = "X-Amz-Expires";
+ const char CONTENT_MD5_HEADER[] = "content-md5";
+ const char API_VERSION_HEADER[] = "x-amz-api-version";
+ const char AWS_TRAILER_HEADER[] = "x-amz-trailer";
+ const char SDK_INVOCATION_ID_HEADER[] = "amz-sdk-invocation-id";
+ const char SDK_REQUEST_HEADER[] = "amz-sdk-request";
+ const char CHUNKED_VALUE[] = "chunked";
+ const char AWS_CHUNKED_VALUE[] = "aws-chunked";
+ const char X_AMZN_TRACE_ID_HEADER[] = "X-Amzn-Trace-Id";
+ const char ALLOCATION_TAG[] = "HttpRequestConversion";
+ const char X_AMZN_ERROR_TYPE[] = "x-amzn-errortype";
-} // Http
-} // Aws
+ std::shared_ptr<Aws::Crt::Http::HttpRequest> HttpRequest::ToCrtHttpRequest()
+ {
+ auto request = Aws::MakeShared<Aws::Crt::Http::HttpRequest>(ALLOCATION_TAG);
+ request->SetBody([&]() -> std::shared_ptr<IOStream> {
+ const std::shared_ptr<Aws::IOStream>& body = GetContentBody();
+ if (body) {
+ return body;
+ }
+ // Return an empty string stream for no body
+ return Aws::MakeShared<Aws::StringStream>(ALLOCATION_TAG, "");
+ }());
+ auto headers = GetHeaders();
+ for (const auto& it: headers)
+ {
+ Aws::Crt::Http::HttpHeader header;
+ header.name = Aws::Crt::ByteCursorFromCString(it.first.c_str());
+ header.value = Aws::Crt::ByteCursorFromCString(it.second.c_str());
+ request->AddHeader(header);
+ }
+ // Need a different URL encoding here.
+ // CRT sigv4 don't any encoding if double encoding is off, need to encode the path before passing to CRT.
+ const URI& uri = m_uri;
+ Aws::StringStream ss;
+ Aws::StringStream port;
+ if (uri.GetScheme() == Scheme::HTTP && uri.GetPort() != HTTP_DEFAULT_PORT)
+ {
+ port << ":" << uri.GetPort();
+ }
+ else if (uri.GetScheme() == Scheme::HTTPS && uri.GetPort() != HTTPS_DEFAULT_PORT)
+ {
+ port << ":" << uri.GetPort();
+ }
+ ss << SchemeMapper::ToString(uri.GetScheme()) << SEPARATOR << uri.GetAuthority() << port.str()
+ << ((uri.GetPath() == "/") ? "" : URI::URLEncodePath(uri.GetPath()))
+ << uri.GetQueryString();
+ request->SetPath(Aws::Crt::ByteCursorFromCString(ss.str().c_str()));
+ const char *method = HttpMethodMapper::GetNameForHttpMethod(m_method);
+ request->SetMethod(Aws::Crt::ByteCursorFromCString(method));
+ return request;
+ }
+
+ } // Http
+} // Aws