aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhor911 <hor911@ydb.tech>2023-02-21 16:08:59 +0300
committerhor911 <hor911@ydb.tech>2023-02-21 16:08:59 +0300
commita6e5108959804baccfc15da911a9e868b834e15b (patch)
tree775ceb60fc41030590b96765e236aa4c7618a679
parenta592760719385100032c595377aee9cd5c6b3977 (diff)
downloadydb-a6e5108959804baccfc15da911a9e868b834e15b.tar.gz
Explicit Content-Type: application/xml for CompleteMultipartUpload POST
-rw-r--r--ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp16
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;