mirror of
https://github.com/ceph/ceph
synced 2025-04-01 00:26:47 +00:00
Merge pull request #30970 from theanalyst/rgw/list-common-prefix
rgw: url encode common prefixes for List Objects response Reviewed-by: Casey Bodley <cbodley@redhat.com>
This commit is contained in:
commit
2d5bac020e
@ -867,7 +867,12 @@ void RGWListBucket_ObjStore_S3::send_common_versioned_response()
|
||||
for (pref_iter = common_prefixes.begin();
|
||||
pref_iter != common_prefixes.end(); ++pref_iter) {
|
||||
s->formatter->open_array_section("CommonPrefixes");
|
||||
if (encode_key) {
|
||||
s->formatter->dump_string("Prefix", url_encode(pref_iter->first, false));
|
||||
} else {
|
||||
s->formatter->dump_string("Prefix", pref_iter->first);
|
||||
}
|
||||
|
||||
s->formatter->close_section();
|
||||
}
|
||||
}
|
||||
@ -876,6 +881,10 @@ void RGWListBucket_ObjStore_S3::send_common_versioned_response()
|
||||
void RGWListBucket_ObjStore_S3::send_versioned_response()
|
||||
{
|
||||
s->formatter->open_object_section_in_ns("ListVersionsResult", XMLNS_AWS_S3);
|
||||
if (strcasecmp(encoding_type.c_str(), "url") == 0) {
|
||||
s->formatter->dump_string("EncodingType", "url");
|
||||
encode_key = true;
|
||||
}
|
||||
RGWListBucket_ObjStore_S3::send_common_versioned_response();
|
||||
s->formatter->dump_string("KeyMarker", marker.name);
|
||||
s->formatter->dump_string("VersionIdMarker", marker.instance);
|
||||
@ -888,11 +897,6 @@ void RGWListBucket_ObjStore_S3::send_versioned_response()
|
||||
s->formatter->dump_string("NextVersionIdMarker", next_marker.instance);
|
||||
}
|
||||
}
|
||||
bool encode_key = false;
|
||||
if (strcasecmp(encoding_type.c_str(), "url") == 0) {
|
||||
s->formatter->dump_string("EncodingType", "url");
|
||||
encode_key = true;
|
||||
}
|
||||
|
||||
if (op_ret >= 0) {
|
||||
if (objs_container) {
|
||||
@ -973,7 +977,11 @@ void RGWListBucket_ObjStore_S3::send_common_response()
|
||||
for (pref_iter = common_prefixes.begin();
|
||||
pref_iter != common_prefixes.end(); ++pref_iter) {
|
||||
s->formatter->open_array_section("CommonPrefixes");
|
||||
if (encode_key) {
|
||||
s->formatter->dump_string("Prefix", url_encode(pref_iter->first, false));
|
||||
} else {
|
||||
s->formatter->dump_string("Prefix", pref_iter->first);
|
||||
}
|
||||
s->formatter->close_section();
|
||||
}
|
||||
}
|
||||
@ -999,12 +1007,11 @@ void RGWListBucket_ObjStore_S3::send_response()
|
||||
}
|
||||
|
||||
s->formatter->open_object_section_in_ns("ListBucketResult", XMLNS_AWS_S3);
|
||||
RGWListBucket_ObjStore_S3::send_common_response();
|
||||
bool encode_key = false;
|
||||
if (strcasecmp(encoding_type.c_str(), "url") == 0) {
|
||||
s->formatter->dump_string("EncodingType", "url");
|
||||
encode_key = true;
|
||||
}
|
||||
RGWListBucket_ObjStore_S3::send_common_response();
|
||||
if (op_ret >= 0) {
|
||||
vector<rgw_bucket_dir_entry>::iterator iter;
|
||||
for (iter = objs.begin(); iter != objs.end(); ++iter) {
|
||||
@ -1053,7 +1060,6 @@ void RGWListBucket_ObjStore_S3v2::send_versioned_response()
|
||||
s->formatter->dump_string("NextVersionIdContinuationToken", next_marker.instance);
|
||||
}
|
||||
|
||||
bool encode_key = false;
|
||||
if (strcasecmp(encoding_type.c_str(), "url") == 0) {
|
||||
s->formatter->dump_string("EncodingType", "url");
|
||||
encode_key = true;
|
||||
@ -1118,7 +1124,12 @@ void RGWListBucket_ObjStore_S3v2::send_versioned_response()
|
||||
for (pref_iter = common_prefixes.begin();
|
||||
pref_iter != common_prefixes.end(); ++pref_iter) {
|
||||
s->formatter->open_array_section("CommonPrefixes");
|
||||
if (encode_key) {
|
||||
s->formatter->dump_string("Prefix", url_encode(pref_iter->first, false));
|
||||
} else {
|
||||
s->formatter->dump_string("Prefix", pref_iter->first);
|
||||
}
|
||||
|
||||
s->formatter->dump_int("KeyCount",objs.size());
|
||||
if (start_after_exist) {
|
||||
s->formatter->dump_string("StartAfter", startAfter);
|
||||
@ -1152,13 +1163,12 @@ void RGWListBucket_ObjStore_S3v2::send_response()
|
||||
}
|
||||
|
||||
s->formatter->open_object_section_in_ns("ListBucketResult", XMLNS_AWS_S3);
|
||||
|
||||
RGWListBucket_ObjStore_S3::send_common_response();
|
||||
bool encode_key = false;
|
||||
if (strcasecmp(encoding_type.c_str(), "url") == 0) {
|
||||
s->formatter->dump_string("EncodingType", "url");
|
||||
encode_key = true;
|
||||
}
|
||||
|
||||
RGWListBucket_ObjStore_S3::send_common_response();
|
||||
if (op_ret >= 0) {
|
||||
vector<rgw_bucket_dir_entry>::iterator iter;
|
||||
for (iter = objs.begin(); iter != objs.end(); ++iter) {
|
||||
|
@ -126,7 +126,9 @@ public:
|
||||
};
|
||||
|
||||
class RGWListBucket_ObjStore_S3 : public RGWListBucket_ObjStore {
|
||||
protected: bool objs_container;
|
||||
protected:
|
||||
bool objs_container;
|
||||
bool encode_key {false};
|
||||
int get_common_params();
|
||||
void send_common_response();
|
||||
void send_common_versioned_response();
|
||||
|
Loading…
Reference in New Issue
Block a user