diff options
author | hor911 <hor911@ydb.tech> | 2023-02-21 16:08:59 +0300 |
---|---|---|
committer | hor911 <hor911@ydb.tech> | 2023-02-21 16:08:59 +0300 |
commit | a6e5108959804baccfc15da911a9e868b834e15b (patch) | |
tree | 775ceb60fc41030590b96765e236aa4c7618a679 | |
parent | a592760719385100032c595377aee9cd5c6b3977 (diff) | |
download | ydb-a6e5108959804baccfc15da911a9e868b834e15b.tar.gz |
Explicit Content-Type: application/xml for CompleteMultipartUpload POST
-rw-r--r-- | ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp b/ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp index c27e275be0..038bf59ab3 100644 --- a/ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp +++ b/ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp @@ -367,14 +367,18 @@ private: for (const auto& tag : Tags) xml << "<Part><PartNumber>" << ++i << "</PartNumber><ETag>" << tag << "</ETag></Part>" << Endl; xml << "</CompleteMultipartUpload>" << Endl; - Gateway->Upload(Url + "?uploadId=" + UploadId, MakeHeaders(RequestId), xml, std::bind(&TS3FileWriteActor::OnMultipartUploadFinish, ActorSystem, SelfId(), ParentId, Key, Url, RequestId, SentSize, std::placeholders::_1), false, RetryPolicy); + Gateway->Upload(Url + "?uploadId=" + UploadId, MakeHeaders(RequestId, "application/xml"sv), xml, std::bind(&TS3FileWriteActor::OnMultipartUploadFinish, ActorSystem, SelfId(), ParentId, Key, Url, RequestId, SentSize, std::placeholders::_1), false, RetryPolicy); } - IHTTPGateway::THeaders MakeHeaders(const TString& requestId) const { - if (const auto& token = CredProvider->GetAuthInfo(); token.empty()) - return IHTTPGateway::THeaders{TString{"X-Request-ID:"} += requestId}; - else - return IHTTPGateway::THeaders{TString("X-YaCloud-SubjectToken:") += token, TString{"X-Request-ID:"} += requestId}; + IHTTPGateway::THeaders MakeHeaders(const TString& requestId, std::string_view contentType = "") const { + auto headers = IHTTPGateway::THeaders{ TString{"X-Request-ID:"} += requestId }; + if (const auto& token = CredProvider->GetAuthInfo(); !token.empty()) { + headers.push_back(TString("X-YaCloud-SubjectToken:") += token); + } + if (!contentType.empty()) { + headers.push_back(TString("Content-Type:") += contentType); + } + return headers; } size_t InFlight = 0ULL; |