return ret;
}
+
+RGWOp *RGWHandler::get_op()
+{
+ RGWOp *op;
+ switch (s->op) {
+ case OP_GET:
+ op = op_get();
+ break;
+ case OP_PUT:
+ op = op_put();
+ break;
+ case OP_DELETE:
+ op = op_delete();
+ break;
+ case OP_HEAD:
+ op = op_head();
+ break;
+ case OP_POST:
+ op = op_post();
+ break;
+ case OP_COPY:
+ op = op_copy();
+ break;
+ default:
+ return NULL;
+ }
+
+ if (op) {
+ op->init(s, this);
+ }
+ return op;
+}
+
+void RGWHandler::put_op(RGWOp *op)
+{
+ delete op;
+}
+
int do_read_permissions(RGWOp *op, bool only_bucket);
virtual int validate_bucket_name(const string& bucket) = 0;
virtual int validate_object_name(const string& object) = 0;
+
+ virtual RGWOp *op_get() { return NULL; }
+ virtual RGWOp *op_put() { return NULL; }
+ virtual RGWOp *op_delete() { return NULL; }
+ virtual RGWOp *op_head() { return NULL; }
+ virtual RGWOp *op_post() { return NULL; }
+ virtual RGWOp *op_copy() { return NULL; }
public:
RGWHandler() {}
virtual ~RGWHandler();
virtual int init(struct req_state *_s, RGWClientIO *cio);
virtual bool filter_request(struct req_state *s) = 0;
- virtual RGWOp *get_op() = 0;
- virtual void put_op(RGWOp *op) = 0;
+ virtual RGWOp *get_op();
+ virtual void put_op(RGWOp *op);
virtual int read_permissions(RGWOp *op) = 0;
virtual int authorize() = 0;
};
return do_read_permissions(op_obj, only_bucket);
}
-RGWOp *RGWHandler_ObjStore::get_op()
-{
- RGWOp *op;
- switch (s->op) {
- case OP_GET:
- op = get_retrieve_op(true);
- break;
- case OP_PUT:
- op = get_create_op();
- break;
- case OP_DELETE:
- op = get_delete_op();
- break;
- case OP_HEAD:
- op = get_retrieve_op(false);
- break;
- case OP_POST:
- op = get_post_op();
- break;
- case OP_COPY:
- op = get_copy_op();
- break;
- default:
- return NULL;
- }
-
- if (op) {
- op->init(s, this);
- }
- return op;
-}
-
RGWRESTMgr::RGWRESTMgr()
{
return handler;
}
-void RGWHandler_ObjStore::put_op(RGWOp *op)
-{
- delete op;
-}
-
virtual bool is_acl_op() = 0;
virtual bool is_obj_update_op() = 0;
- virtual RGWOp *get_retrieve_obj_op(bool get_data) = 0;
- virtual RGWOp *get_retrieve_op(bool get_data) = 0;
- virtual RGWOp *get_create_op() = 0;
- virtual RGWOp *get_delete_op() = 0;
- virtual RGWOp *get_post_op() = 0;
- virtual RGWOp *get_copy_op() = 0;
+ virtual RGWOp *op_get() = 0;
+ virtual RGWOp *op_put() = 0;
+ virtual RGWOp *op_delete() = 0;
+ virtual RGWOp *op_head() = 0;
+ virtual RGWOp *op_post() = 0;
+ virtual RGWOp *op_copy() = 0;
virtual int validate_bucket_name(const string& bucket);
virtual int validate_object_name(const string& object);
RGWHandler_ObjStore() {}
virtual ~RGWHandler_ObjStore() {}
int read_permissions(RGWOp *op);
- RGWOp *get_op();
- void put_op(RGWOp *op);
static int preprocess(struct req_state *s, RGWClientIO *cio);
virtual bool filter_request(struct req_state *s) = 0;
rgw_flush_formatter_and_reset(s, s->formatter);
}
-RGWOp *RGWHandler_ObjStore_S3::get_retrieve_obj_op(bool get_data)
+RGWOp *RGWHandler_ObjStore_S3::get_obj_op(bool get_data)
{
if (is_acl_op()) {
return new RGWGetACLs_ObjStore_S3;
return new RGWStatBucket_ObjStore_S3;
}
-RGWOp *RGWHandler_ObjStore_S3::get_retrieve_op(bool get_data)
+RGWOp *RGWHandler_ObjStore_S3::op_get()
{
if (s->bucket_name) {
if (is_acl_op()) {
} else if (s->args.exists("uploadId")) {
return new RGWListMultipart_ObjStore_S3;
}
- return get_retrieve_obj_op(get_data);
+ return get_obj_op(true);
}
return new RGWListBuckets_ObjStore_S3;
}
-RGWOp *RGWHandler_ObjStore_S3::get_create_op()
+RGWOp *RGWHandler_ObjStore_S3::op_head()
+{
+ if (s->bucket_name) {
+ if (is_acl_op()) {
+ return new RGWGetACLs_ObjStore_S3;
+ } else if (s->args.exists("uploadId")) {
+ return new RGWListMultipart_ObjStore_S3;
+ }
+ return get_obj_op(false);
+ }
+
+ return new RGWListBuckets_ObjStore_S3;
+}
+
+RGWOp *RGWHandler_ObjStore_S3::op_put()
{
if (is_acl_op()) {
return new RGWPutACLs_ObjStore_S3;
return NULL;
}
-RGWOp *RGWHandler_ObjStore_S3::get_delete_op()
+RGWOp *RGWHandler_ObjStore_S3::op_delete()
{
string upload_id = s->args.get("uploadId");
return NULL;
}
-RGWOp *RGWHandler_ObjStore_S3::get_post_op()
+RGWOp *RGWHandler_ObjStore_S3::op_post()
{
if (s->object) {
if (s->args.exists("uploadId"))
bool is_obj_update_op() {
return is_acl_op();
}
- RGWOp *get_retrieve_obj_op(bool get_data);
- RGWOp *get_retrieve_op(bool get_data);
- RGWOp *get_create_op();
- RGWOp *get_delete_op();
- RGWOp *get_post_op();
- RGWOp *get_copy_op() { return NULL; }
+ RGWOp *get_obj_op(bool get_data);
+
+ RGWOp *op_get();
+ RGWOp *op_head();
+ RGWOp *op_put();
+ RGWOp *op_delete();
+ RGWOp *op_post();
+ RGWOp *op_copy() { return NULL; }
int init_from_header(struct req_state *s);
public:
return 0;
}
-RGWOp *RGWHandler_ObjStore_SWIFT::get_retrieve_obj_op(bool get_data)
+RGWOp *RGWHandler_ObjStore_SWIFT::get_obj_op(bool get_data)
{
if (is_acl_op()) {
return new RGWGetACLs_ObjStore_SWIFT;
return new RGWStatBucket_ObjStore_SWIFT;
}
-RGWOp *RGWHandler_ObjStore_SWIFT::get_retrieve_op(bool get_data)
+RGWOp *RGWHandler_ObjStore_SWIFT::op_get()
{
if (s->bucket_name) {
if (is_acl_op()) {
return new RGWGetACLs_ObjStore_SWIFT;
}
- return get_retrieve_obj_op(get_data);
+ return get_obj_op(true);
}
- if (get_data)
- return new RGWListBuckets_ObjStore_SWIFT;
- else
- return new RGWStatAccount_ObjStore_SWIFT;
+ return new RGWListBuckets_ObjStore_SWIFT;
+}
+
+RGWOp *RGWHandler_ObjStore_SWIFT::op_head()
+{
+ if (s->bucket_name) {
+ if (is_acl_op()) {
+ return new RGWGetACLs_ObjStore_SWIFT;
+ }
+ return get_obj_op(false);
+ }
+
+ return new RGWStatAccount_ObjStore_SWIFT;
}
-RGWOp *RGWHandler_ObjStore_SWIFT::get_create_op()
+RGWOp *RGWHandler_ObjStore_SWIFT::op_put()
{
if (is_acl_op()) {
return new RGWPutACLs_ObjStore_SWIFT;
return NULL;
}
-RGWOp *RGWHandler_ObjStore_SWIFT::get_delete_op()
+RGWOp *RGWHandler_ObjStore_SWIFT::op_delete()
{
if (s->object)
return new RGWDeleteObj_ObjStore_SWIFT;
return NULL;
}
-RGWOp *RGWHandler_ObjStore_SWIFT::get_post_op()
+RGWOp *RGWHandler_ObjStore_SWIFT::op_post()
{
return new RGWPutMetadata_ObjStore_SWIFT;
}
-RGWOp *RGWHandler_ObjStore_SWIFT::get_copy_op()
+RGWOp *RGWHandler_ObjStore_SWIFT::op_copy()
{
if (s->object)
return new RGWCopyObj_ObjStore_SWIFT;
return s->op == OP_POST;
}
- RGWOp *get_retrieve_obj_op(bool get_data);
- RGWOp *get_retrieve_op(bool get_data);
- RGWOp *get_create_op();
- RGWOp *get_delete_op();
- RGWOp *get_post_op();
- RGWOp *get_copy_op();
+ RGWOp *get_obj_op(bool get_data);
+ RGWOp *op_get();
+ RGWOp *op_head();
+ RGWOp *op_put();
+ RGWOp *op_delete();
+ RGWOp *op_post();
+ RGWOp *op_copy();
int init_from_header(struct req_state *s);
public:
using namespace ceph::crypto;
-static RGW_SWIFT_Auth_Get rgw_swift_auth_get;
-
static int build_token(string& swift_user, string& key, uint64_t nonce, utime_t& expiration, bufferlist& bl)
{
::encode(swift_user, bl);
return 0;
}
-RGWOp *RGWHandler_SWIFT_Auth::get_op()
-{
- RGWOp *op;
- switch (s->op) {
- case OP_GET:
- op = &rgw_swift_auth_get;
- break;
- default:
- return NULL;
- }
-
- if (op) {
- op->init(s, this);
- }
- return op;
-}
-
-void RGWHandler_SWIFT_Auth::put_op(RGWOp *op)
+RGWOp *RGWHandler_SWIFT_Auth::op_get()
{
+ return new RGW_SWIFT_Auth_Get;
}
public:
RGWHandler_SWIFT_Auth() {}
~RGWHandler_SWIFT_Auth() {}
- RGWOp *get_op();
- void put_op(RGWOp *op);
+ RGWOp *op_get();
bool filter_request(struct req_state *s);