@@ -1736,11 +1736,7 @@ void RGWListBucket_ObjStore_S3::send_common_versioned_response()
17361736 for (pref_iter = common_prefixes.begin ();
17371737 pref_iter != common_prefixes.end (); ++pref_iter) {
17381738 s->formatter ->open_array_section (" CommonPrefixes" );
1739- if (encode_key) {
1740- s->formatter ->dump_string (" Prefix" , url_encode (pref_iter->first , false ));
1741- } else {
1742- s->formatter ->dump_string (" Prefix" , pref_iter->first );
1743- }
1739+ dump_urlsafe (s, encode_key, " Prefix" , pref_iter->first , false );
17441740
17451741 s->formatter ->close_section ();
17461742 }
@@ -1758,7 +1754,7 @@ void RGWListBucket_ObjStore_S3::send_versioned_response()
17581754 s->formatter ->dump_string (" KeyMarker" , marker.name );
17591755 s->formatter ->dump_string (" VersionIdMarker" , marker.instance );
17601756 if (is_truncated && !next_marker.empty ()) {
1761- s-> formatter -> dump_string ( " NextKeyMarker" , next_marker.name );
1757+ dump_urlsafe (s ,encode_key, " NextKeyMarker" , next_marker.name );
17621758 if (next_marker.instance .empty ()) {
17631759 s->formatter ->dump_string (" NextVersionIdMarker" , " null" );
17641760 }
@@ -1781,14 +1777,7 @@ void RGWListBucket_ObjStore_S3::send_versioned_response()
17811777 s->formatter ->dump_bool (" IsDeleteMarker" , iter->is_delete_marker ());
17821778 }
17831779 rgw_obj_key key (iter->key );
1784- if (encode_key) {
1785- string key_name;
1786- url_encode (key.name , key_name);
1787- s->formatter ->dump_string (" Key" , key_name);
1788- }
1789- else {
1790- s->formatter ->dump_string (" Key" , key.name );
1791- }
1780+ dump_urlsafe (s ,encode_key, " Key" , key.name );
17921781 string version_id = key.instance ;
17931782 if (version_id.empty ()) {
17941783 version_id = " null" ;
@@ -1836,11 +1825,7 @@ void RGWListBucket_ObjStore_S3::send_common_response()
18361825 s->formatter ->dump_string (" Prefix" , prefix);
18371826 s->formatter ->dump_int (" MaxKeys" , max);
18381827 if (!delimiter.empty ()) {
1839- if (encode_key) {
1840- s->formatter ->dump_string (" Delimiter" , url_encode (delimiter, false ));
1841- } else {
1842- s->formatter ->dump_string (" Delimiter" , delimiter);
1843- }
1828+ dump_urlsafe (s, encode_key, " Delimiter" , delimiter, false );
18441829 }
18451830 s->formatter ->dump_string (" IsTruncated" , (max && is_truncated ? " true"
18461831 : " false" ));
@@ -1850,11 +1835,7 @@ void RGWListBucket_ObjStore_S3::send_common_response()
18501835 for (pref_iter = common_prefixes.begin ();
18511836 pref_iter != common_prefixes.end (); ++pref_iter) {
18521837 s->formatter ->open_array_section (" CommonPrefixes" );
1853- if (encode_key) {
1854- s->formatter ->dump_string (" Prefix" , url_encode (pref_iter->first , false ));
1855- } else {
1856- s->formatter ->dump_string (" Prefix" , pref_iter->first );
1857- }
1838+ dump_urlsafe (s, encode_key, " Prefix" , pref_iter->first , false );
18581839 s->formatter ->close_section ();
18591840 }
18601841 }
@@ -1895,13 +1876,6 @@ void RGWListBucket_ObjStore_S3::send_response()
18951876 for (iter = objs.begin (); iter != objs.end (); ++iter) {
18961877
18971878 rgw_obj_key key (iter->key );
1898- std::string key_name;
1899-
1900- if (encode_key) {
1901- url_encode (key.name , key_name);
1902- } else {
1903- key_name = key.name ;
1904- }
19051879 /* conditionally format JSON in the obvious way--I'm unsure if
19061880 * AWS actually does this */
19071881 if (s->format == RGWFormat::XML) {
@@ -1910,7 +1884,7 @@ void RGWListBucket_ObjStore_S3::send_response()
19101884 // json
19111885 s->formatter ->open_object_section (" dummy" );
19121886 }
1913- s-> formatter -> dump_string ( " Key" , key_name );
1887+ dump_urlsafe (s ,encode_key, " Key" , key. name );
19141888 dump_time (s, " LastModified" , iter->meta .mtime );
19151889 s->formatter ->dump_format (" ETag" , " \" %s\" " , iter->meta .etag .c_str ());
19161890 s->formatter ->dump_int (" Size" , iter->meta .accounted_size );
@@ -1934,7 +1908,7 @@ void RGWListBucket_ObjStore_S3::send_response()
19341908 }
19351909 s->formatter ->dump_string (" Marker" , marker.name );
19361910 if (is_truncated && !next_marker.empty ()) {
1937- s-> formatter -> dump_string ( " NextMarker" , next_marker.name );
1911+ dump_urlsafe (s, encode_key, " NextMarker" , next_marker.name );
19381912 }
19391913 s->formatter ->close_section ();
19401914 rgw_flush_formatter_and_reset (s, s->formatter );
@@ -1970,14 +1944,7 @@ void RGWListBucket_ObjStore_S3v2::send_versioned_response()
19701944 s->formatter ->dump_bool (" IsDeleteContinuationToken" , iter->is_delete_marker ());
19711945 }
19721946 rgw_obj_key key (iter->key );
1973- if (encode_key) {
1974- string key_name;
1975- url_encode (key.name , key_name);
1976- s->formatter ->dump_string (" Key" , key_name);
1977- }
1978- else {
1979- s->formatter ->dump_string (" Key" , key.name );
1980- }
1947+ dump_urlsafe (s, encode_key, " Key" , key.name );
19811948 string version_id = key.instance ;
19821949 if (version_id.empty ()) {
19831950 version_id = " null" ;
@@ -2015,11 +1982,7 @@ void RGWListBucket_ObjStore_S3v2::send_versioned_response()
20151982 for (pref_iter = common_prefixes.begin ();
20161983 pref_iter != common_prefixes.end (); ++pref_iter) {
20171984 s->formatter ->open_array_section (" CommonPrefixes" );
2018- if (encode_key) {
2019- s->formatter ->dump_string (" Prefix" , url_encode (pref_iter->first , false ));
2020- } else {
2021- s->formatter ->dump_string (" Prefix" , pref_iter->first );
2022- }
1985+ dump_urlsafe (s, encode_key, " Prefix" , pref_iter->first , false );
20231986
20241987 s->formatter ->dump_int (" KeyCount" ,objs.size ());
20251988 if (start_after_exist) {
@@ -2065,14 +2028,7 @@ void RGWListBucket_ObjStore_S3v2::send_response()
20652028 for (iter = objs.begin (); iter != objs.end (); ++iter) {
20662029 rgw_obj_key key (iter->key );
20672030 s->formatter ->open_array_section (" Contents" );
2068- if (encode_key) {
2069- string key_name;
2070- url_encode (key.name , key_name);
2071- s->formatter ->dump_string (" Key" , key_name);
2072- }
2073- else {
2074- s->formatter ->dump_string (" Key" , key.name );
2075- }
2031+ dump_urlsafe (s, encode_key, " Key" , key.name );
20762032 dump_time (s, " LastModified" , iter->meta .mtime );
20772033 s->formatter ->dump_format (" ETag" , " \" %s\" " , iter->meta .etag .c_str ());
20782034 s->formatter ->dump_int (" Size" , iter->meta .accounted_size );
@@ -4151,11 +4107,7 @@ void RGWListBucketMultiparts_ObjStore_S3::send_response()
41514107 for (iter = uploads.begin (); iter != uploads.end (); ++iter) {
41524108 rgw::sal::MultipartUpload* upload = iter->get ();
41534109 s->formatter ->open_array_section (" Upload" );
4154- if (encode_url) {
4155- s->formatter ->dump_string (" Key" , url_encode (upload->get_key (), false ));
4156- } else {
4157- s->formatter ->dump_string (" Key" , upload->get_key ());
4158- }
4110+ dump_urlsafe (s, encode_url, " Key" , upload->get_key (), false );
41594111 s->formatter ->dump_string (" UploadId" , upload->get_upload_id ());
41604112 const ACLOwner& owner = upload->get_owner ();
41614113 dump_owner (s, owner.id , owner.display_name , " Initiator" );
@@ -4167,11 +4119,7 @@ void RGWListBucketMultiparts_ObjStore_S3::send_response()
41674119 if (!common_prefixes.empty ()) {
41684120 s->formatter ->open_array_section (" CommonPrefixes" );
41694121 for (const auto & kv : common_prefixes) {
4170- if (encode_url) {
4171- s->formatter ->dump_string (" Prefix" , url_encode (kv.first , false ));
4172- } else {
4173- s->formatter ->dump_string (" Prefix" , kv.first );
4174- }
4122+ dump_urlsafe (s, encode_url, " Prefix" , kv.first , false );
41754123 }
41764124 s->formatter ->close_section ();
41774125 }
0 commit comments