]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: refactor header grants
authorYehuda Sadeh <yehuda@inktank.com>
Wed, 20 Feb 2013 20:39:37 +0000 (12:39 -0800)
committerYehuda Sadeh <yehuda@inktank.com>
Wed, 20 Feb 2013 20:39:37 +0000 (12:39 -0800)
Move definition to a static array.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_acl_s3.cc

index e67f77642a6c09c6b8b661642618e03b2936c035..df4d2958d30d7818bb099590ebde5ef402e151b6 100644 (file)
@@ -267,11 +267,6 @@ bool RGWAccessControlList_S3::xml_end(const char *el) {
 struct s3_acl_header {
   int rgw_perm;
   const char *http_header;
-
-  s3_acl_header(int perm, const char *head) {
-    rgw_perm = perm;
-    http_header = head;
-  }
 };
 
 static const char *get_acl_header(RGWEnv *env,
@@ -424,28 +419,22 @@ bool RGWAccessControlPolicy_S3::xml_end(const char *el) {
   return true;
 }
 
+static const s3_acl_header acl_header_perms[] = {
+  {RGW_PERM_READ, "HTTP_X_AMZ_GRANT_READ"},
+  {RGW_PERM_WRITE, "HTTP_X_AMZ_GRANT_WRITE"},
+  {RGW_PERM_READ_ACP,"HTTP_X_AMZ_GRANT_READ_ACP"},
+  {RGW_PERM_WRITE_ACP, "HTTP_X_AMZ_GRANT_WRITE_ACP"},
+  {RGW_PERM_FULL_CONTROL, "HTTP_X_AMZ_GRANT_FULL_CONTROL"},
+  {0, NULL}
+};
+
 int RGWAccessControlPolicy_S3::create_from_headers(RGWRados *store, RGWEnv *env, ACLOwner& _owner)
 {
   std::list<ACLGrant> grants;
   int ret;
 
-  const s3_acl_header grant_read(RGW_PERM_READ,"HTTP_X_AMZ_GRANT_READ");
-  const s3_acl_header grant_write(RGW_PERM_WRITE, "HTTP_X_AMZ_GRANT_WRITE");
-  const s3_acl_header grant_read_acp(RGW_PERM_READ_ACP,"HTTP_X_AMZ_GRANT_READ_ACP");
-  const s3_acl_header grant_write_acp(RGW_PERM_WRITE_ACP, "HTTP_X_AMZ_GRANT_WRITE_ACP");
-  const s3_acl_header grant_full_control(RGW_PERM_FULL_CONTROL, "HTTP_X_AMZ_GRANT_FULL_CONTROL");
-
-  const s3_acl_header *perms[] = {
-                                   &grant_read,
-                                   &grant_write,
-                                   &grant_read_acp,
-                                   &grant_write_acp,
-                                   &grant_full_control,
-                                   NULL
-                                 };
-
-  for (const struct s3_acl_header **p = perms; *p; p++) {
-    ret = parse_acl_header(store, env, *p, grants);
+  for (const struct s3_acl_header *p = acl_header_perms; p->rgw_perm; p++) {
+    ret = parse_acl_header(store, env, p, grants);
     if (ret < 0)
       return false;
   }