]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: make parse_boundary_params() static method of RGWPostObj_ObjStore.
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Sun, 18 Sep 2016 17:59:25 +0000 (19:59 +0200)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Mon, 24 Apr 2017 15:32:14 +0000 (17:32 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/rgw/rgw_rest.cc
src/rgw/rgw_rest.h

index f95f3ddccf2c4c5e936e1e113ba51fe43789eb68..7abe148425eea74a201fc8518079bb4795d89be3 100644 (file)
@@ -1240,30 +1240,33 @@ int RGWPutObj_ObjStore::get_data(bufferlist& bl)
 /*
  * parses params in the format: 'first; param1=foo; param2=bar'
  */
-static void parse_params(const string& params_str, string& first,
-                        map<string, string>& params)
+void RGWPostObj_ObjStore::parse_boundary_params(const std::string& params_str,
+                                                std::string& first,
+                                                std::map<std::string,
+                                                         std::string>& params)
 {
   size_t pos = params_str.find(';');
-  if (pos == string::npos) {
+  if (std::string::npos == pos) {
     first = rgw_trim_whitespace(params_str);
     return;
   }
 
   first = rgw_trim_whitespace(params_str.substr(0, pos));
-
   pos++;
 
   while (pos < params_str.size()) {
     size_t end = params_str.find(';', pos);
-    if (end == string::npos)
+    if (std::string::npos == end) {
       end = params_str.size();
+    }
 
-    string param = params_str.substr(pos, end - pos);
-
+    std::string param = params_str.substr(pos, end - pos);
     size_t eqpos = param.find('=');
-    if (eqpos != string::npos) {
-      params[rgw_trim_whitespace(param.substr(0, eqpos))] =
-        rgw_trim_quotes(param.substr(eqpos + 1));
+
+    if (std::string::npos != eqpos) {
+      std::string param_name = rgw_trim_whitespace(param.substr(0, eqpos));
+      std::string val = rgw_trim_quotes(param.substr(eqpos + 1));
+      params[std::move(param_name)] = std::move(val);
     } else {
       params[rgw_trim_whitespace(param)] = "";
     }
@@ -1284,7 +1287,7 @@ int RGWPostObj_ObjStore::parse_part_field(const std::string& line,
   if (pos >= line.size() - 1)
     return 0;
 
-  parse_params(line.substr(pos + 1), field.val, field.params);
+  parse_boundary_params(line.substr(pos + 1), field.val, field.params);
 
   return 0;
 }
@@ -1541,7 +1544,7 @@ int RGWPostObj_ObjStore::get_params()
   std::string req_content_type_str = s->info.env->get("CONTENT_TYPE", "");
   std::string req_content_type;
   std::map<std::string, std::string> params;
-  parse_params(req_content_type_str, req_content_type, params);
+  parse_boundary_params(req_content_type_str, req_content_type, params);
 
   if (req_content_type.compare("multipart/form-data") != 0) {
     err_msg = "Request Content-Type is not multipart/form-data";
index 2b02f2125e3bd93f78511c7cf4dd1297871fc2a5..2ce806f2da840d8b98cab5cdedfb132655e94219 100644 (file)
@@ -263,6 +263,9 @@ protected:
                               std::string& field_name, /* out */
                               post_part_field& field); /* out */
 
+  static void parse_boundary_params(const std::string& params_str,
+                                    std::string& first,
+                                    std::map<std::string, std::string>& params);
   int get_params() override;
 
 public: