@@ -40,16 +40,17 @@ struct TCompleteMultipartUpload {
40
40
41
41
TString RequestId;
42
42
TString Url;
43
+ TString UrlEscaped;
43
44
TString UploadId;
44
45
TString Token;
45
46
std::vector<TString> Tags;
46
47
47
48
TCompleteMultipartUpload (const TString& requestId, const TString& url, const TString& uploadId, const TString& token)
48
- : RequestId(requestId), Url(url), UploadId(uploadId), Token(token) {
49
+ : RequestId(requestId), Url(url), UrlEscaped(NS3Util::UrlEscapeRet(url)), UploadId(uploadId), Token(token) {
49
50
}
50
51
51
52
TString BuildUrl () const {
52
- TUrlBuilder urlBuilder (Url );
53
+ TUrlBuilder urlBuilder (UrlEscaped );
53
54
urlBuilder.AddUrlParam (" uploadId" , UploadId);
54
55
return urlBuilder.Build ();
55
56
}
@@ -72,22 +73,23 @@ struct TListMultipartUploads {
72
73
73
74
TString RequestId;
74
75
TString Url;
76
+ TString UrlEscaped;
75
77
TString Prefix;
76
78
TString Token;
77
79
TString KeyMarker;
78
80
TString UploadIdMarker;
79
81
80
82
TListMultipartUploads (const TString& requestId, const TString& url, const TString& prefix, const TString& token,
81
83
const TString& keyMarker = " " , const TString& uploadIdMarker = " " )
82
- : RequestId(requestId), Url(url), Prefix(prefix), Token(token), KeyMarker(keyMarker), UploadIdMarker(uploadIdMarker) {
84
+ : RequestId(requestId), Url(url), UrlEscaped(NS3Util::UrlEscapeRet(url)), Prefix(prefix), Token(token), KeyMarker(keyMarker), UploadIdMarker(uploadIdMarker) {
83
85
}
84
86
85
87
TString BuildUrl () const {
86
88
// We have to sort the cgi parameters for the correct aws signature
87
89
// This requirement will be fixed in the curl library
88
90
// https://github.com/curl/curl/commit/fc76a24c53b08cdf6eec8ba787d8eac64651d56e
89
91
// https://github.com/curl/curl/commit/c87920353883ef9d5aa952e724a8e2589d76add5
90
- TUrlBuilder urlBuilder (Url );
92
+ TUrlBuilder urlBuilder (UrlEscaped );
91
93
if (KeyMarker) {
92
94
urlBuilder.AddUrlParam (" key-marker" , KeyMarker);
93
95
}
@@ -106,15 +108,16 @@ struct TAbortMultipartUpload {
106
108
107
109
TString RequestId;
108
110
TString Url;
111
+ TString UrlEscaped;
109
112
TString UploadId;
110
113
TString Token;
111
114
112
115
TAbortMultipartUpload (const TString& requestId, const TString& url, const TString& uploadId, const TString& token)
113
- : RequestId(requestId), Url(url), UploadId(uploadId), Token(token) {
116
+ : RequestId(requestId), Url(url), UrlEscaped(NS3Util::UrlEscapeRet(url)), UploadId(uploadId), Token(token) {
114
117
}
115
118
116
119
TString BuildUrl () const {
117
- TUrlBuilder urlBuilder (Url );
120
+ TUrlBuilder urlBuilder (UrlEscaped );
118
121
urlBuilder.AddUrlParam (" uploadId" , UploadId);
119
122
return urlBuilder.Build ();
120
123
}
@@ -126,22 +129,23 @@ struct TListParts {
126
129
127
130
TString RequestId;
128
131
TString Url;
132
+ TString UrlEscaped;
129
133
TString UploadId;
130
134
TString Token;
131
135
TString PartNumberMarker;
132
136
TCompleteMultipartUpload::TPtr CompleteState;
133
137
134
138
TListParts (const TString& requestId, const TString& url, const TString& uploadId, const TString& token,
135
139
TCompleteMultipartUpload::TPtr completeState)
136
- : RequestId(requestId), Url(url), UploadId(uploadId), Token(token), CompleteState(completeState) {
140
+ : RequestId(requestId), Url(url), UrlEscaped(NS3Util::UrlEscapeRet(url)), UploadId(uploadId), Token(token), CompleteState(completeState) {
137
141
}
138
142
139
143
TString BuildUrl () const {
140
144
// We have to sort the cgi parameters for the correct aws signature
141
145
// This requirement will be fixed in the curl library
142
146
// https://github.com/curl/curl/commit/fc76a24c53b08cdf6eec8ba787d8eac64651d56e
143
147
// https://github.com/curl/curl/commit/c87920353883ef9d5aa952e724a8e2589d76add5
144
- TUrlBuilder urlBuilder (Url );
148
+ TUrlBuilder urlBuilder (UrlEscaped );
145
149
if (PartNumberMarker) {
146
150
urlBuilder.AddUrlParam (" part-number-marker" , PartNumberMarker);
147
151
}
@@ -682,4 +686,4 @@ THolder<NActors::IActor> MakeS3ApplicatorActor(
682
686
);
683
687
}
684
688
685
- } // namespace NYql::NDq
689
+ } // namespace NYql::NDq
0 commit comments