return op_ret;
}
+ if (auto encoding_type = s->info.args.get_optional("encoding-type");
+ encoding_type != boost::none) {
+ if (strcasecmp(encoding_type->c_str(), "url") != 0) {
+ op_ret = -EINVAL;
+ s->err.message="Invalid Encoding Method specified in Request";
+ return op_ret;
+ }
+ encode_url = true;
+ }
+
string key_marker = s->info.args.get("key-marker");
string upload_id_marker = s->info.args.get("upload-id-marker");
if (!key_marker.empty())
for (iter = uploads.begin(); iter != uploads.end(); ++iter) {
RGWMPObj& mp = iter->mp;
s->formatter->open_array_section("Upload");
- s->formatter->dump_string("Key", mp.get_key());
+ if (encode_url) {
+ s->formatter->dump_string("Key", url_encode(mp.get_key(), false));
+ } else {
+ s->formatter->dump_string("Key", mp.get_key());
+ }
s->formatter->dump_string("UploadId", mp.get_upload_id());
dump_owner(s, s->user->user_id, s->user->display_name, "Initiator");
dump_owner(s, s->user->user_id, s->user->display_name);
}
if (!common_prefixes.empty()) {
s->formatter->open_array_section("CommonPrefixes");
- map<string, bool>::iterator pref_iter;
- for (pref_iter = common_prefixes.begin();
- pref_iter != common_prefixes.end(); ++pref_iter) {
- s->formatter->dump_string("CommonPrefixes.Prefix", pref_iter->first);
+ for (const auto& kv : common_prefixes) {
+ if (encode_url) {
+ s->formatter->dump_string("CommonPrefixes.Prefix",
+ url_encode(kv.first, false));
+ } else {
+ s->formatter->dump_string("CommonPrefixes.Prefix", kv.first);
+ }
}
s->formatter->close_section();
}