- .*test_container_synchronization.*
- .*test_object_services.PublicObjectTest.test_access_public_container_object_without_using_creds
- .*test_object_services.ObjectTest.test_create_object_with_transfer_encoding
- - .*test_container_services.ContainerTest.test_create_container_with_remove_metadata_key
- - .*test_container_services.ContainerTest.test_create_container_with_remove_metadata_value
- .*test_object_expiry.ObjectExpiryTest.test_get_object_after_expiry_time
- .*test_object_expiry.ObjectExpiryTest.test_get_object_at_expiry_time
- .*test_account_services.AccountTest.test_list_no_account_metadata
if (found_bad_meta && strncmp(name, "META_", name_len) == 0)
*found_bad_meta = true;
- char name_low[meta_prefixes[0].len + name_len + 1];
- snprintf(name_low, meta_prefixes[0].len - 5 + name_len + 1, "%s%s", meta_prefixes[0].str + 5 /* skip HTTP_ */, name); // normalize meta prefix
- int j;
- for (j = 0; name_low[j]; j++) {
- if (name_low[j] == '_')
- name_low[j] = '-';
- else if (name_low[j] == '-')
- name_low[j] = '_';
- else
- name_low[j] = tolower(name_low[j]);
- }
- name_low[j] = 0;
+ stringstream ss;
+ ss << meta_prefixes[0].str + 5 /* skip HTTP_ */ << name;
+ string name_low = lowercase_dash_underscore_http_attr(ss.str());
auto it = x_meta_map.find(name_low);
if (it != x_meta_map.end()) {
} else {
x_meta_map[name_low] = val;
}
- if (strncmp(name_low, "x-amz-server-side-encryption", 20) == 0) {
+ if (strncmp(name_low.c_str(), "x-amz-server-side-encryption", 20) == 0) {
crypt_attribute_map[name_low] = val;
}
}
}
}
+/*
+ * make attrs look-like_this
+ * converts underscores to dashes, and dashes to underscores
+ */
+string lowercase_dash_underscore_http_attr(const string& orig)
+{
+ const char *s = orig.c_str();
+ char buf[orig.size() + 1];
+ buf[orig.size()] = '\0';
+
+ for (size_t i = 0; i < orig.size(); ++i, ++s) {
+ switch (*s) {
+ case '_':
+ buf[i] = '-';
+ break;
+ case '-':
+ buf[i] = '_';
+ break;
+ default:
+ buf[i] = tolower(*s);
+ }
+ }
+ return string(buf);
+}
+
/*
* make attrs look-like-this
* converts underscores to dashes
return string(buf);
}
+/*
+ * make attrs Look-Like-This or Look_Like_This
+ * converts attrs to camelcase
+ */
+string camelcase_http_attr(const string& orig)
+{
+ const char *s = orig.c_str();
+ char buf[orig.size() + 1];
+ buf[orig.size()] = '\0';
+
+ bool last_sep = true;
+
+ for (size_t i = 0; i < orig.size(); ++i, ++s) {
+ switch (*s) {
+ case '_':
+ case '-':
+ buf[i] = *s;
+ last_sep = true;
+ break;
+ default:
+ if (last_sep) {
+ buf[i] = toupper(*s);
+ } else {
+ buf[i] = tolower(*s);
+ }
+ last_sep = false;
+ }
+ }
+ return string(buf);
+}
+
/*
* make attrs Look-Like-This
* converts underscores to dashes
uint32_t flag);
extern std::string camelcase_dash_http_attr(const std::string& orig);
+extern std::string camelcase_http_attr(const std::string& orig);
extern std::string lowercase_dash_http_attr(const std::string& orig);
+extern std::string lowercase_dash_underscore_http_attr(const std::string& orig);
void rgw_setup_saved_curl_handles();
void rgw_release_all_curl_handles();
dump_header(s, geniter->second, iter->second);
} else if (strncmp(name, RGW_ATTR_META_PREFIX, PREFIX_LEN) == 0) {
dump_header_prefixed(s, "X-Account-Meta-",
- camelcase_dash_http_attr(name + PREFIX_LEN),
+ camelcase_http_attr(name + PREFIX_LEN),
iter->second);
}
}
dump_header(s, geniter->second, iter->second);
} else if (strncmp(name, RGW_ATTR_META_PREFIX, PREFIX_LEN) == 0) {
dump_header_prefixed(s, "X-Container-Meta-",
- camelcase_dash_http_attr(name + PREFIX_LEN),
+ camelcase_http_attr(name + PREFIX_LEN),
iter->second);
}
}
if (prefix_len > 0) {
string name(RGW_ATTR_META_PREFIX);
- name.append(lowercase_dash_http_attr(p + prefix_len));
+ name.append(lowercase_dash_underscore_http_attr(p + prefix_len));
rmattr_names.insert(name);
}
}
sizeof(RGW_ATTR_META_PREFIX)-1) == 0) {
name += sizeof(RGW_ATTR_META_PREFIX) - 1;
dump_header_prefixed(s, "X-Object-Meta-",
- camelcase_dash_http_attr(name), kv.second);
+ camelcase_http_attr(name), kv.second);
}
}