From c429d1ac348e9f981a92fd8f94bb9cefa52cae53 Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Fri, 13 Mar 2015 18:37:39 +0100 Subject: [PATCH] rgw: add support for X-Copied-From{-Account} headers of Swift API. Fixes: #10663 Backport: hammer Signed-off-by: Radoslaw Zarzynski (cherry picked from commit 94f1375ccb9df02cdd8f6828153ae2e3a7ad36b1) --- src/rgw/rgw_rest_swift.cc | 15 +++++++++++++++ src/rgw/rgw_rest_swift.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/rgw/rgw_rest_swift.cc b/src/rgw/rgw_rest_swift.cc index 4161743f39dc2..0798e673f0313 100644 --- a/src/rgw/rgw_rest_swift.cc +++ b/src/rgw/rgw_rest_swift.cc @@ -582,6 +582,20 @@ void RGWCopyObj_ObjStore_SWIFT::send_partial_response(off_t ofs) rgw_flush_formatter(s, s->formatter); } +void RGWCopyObj_ObjStore_SWIFT::dump_copy_info() +{ + /* Dump X-Copied-From */ + string objname, bucketname; + url_encode(src_object.name, objname); + url_encode(src_bucket.name, bucketname); + s->cio->print("X-Copied-From: %s/%s\r\n", bucketname.c_str(), objname.c_str()); + + /* Dump X-Copied-From-Account */ + string account_name; + url_encode(s->user.user_id, account_name); + s->cio->print("X-Copied-From-Account: %s\r\n", account_name.c_str()); +} + void RGWCopyObj_ObjStore_SWIFT::send_response() { if (!sent_header) { @@ -591,6 +605,7 @@ void RGWCopyObj_ObjStore_SWIFT::send_response() dump_errno(s); dump_etag(s, etag.c_str()); dump_last_modified(s, mtime); + dump_copy_info(); end_header(s, this); } else { s->formatter->close_section(); diff --git a/src/rgw/rgw_rest_swift.h b/src/rgw/rgw_rest_swift.h index 2374e15bd0fd2..4f1358ef78120 100644 --- a/src/rgw/rgw_rest_swift.h +++ b/src/rgw/rgw_rest_swift.h @@ -113,6 +113,8 @@ public: class RGWCopyObj_ObjStore_SWIFT : public RGWCopyObj_ObjStore { bool sent_header; +protected: + void dump_copy_info(); public: RGWCopyObj_ObjStore_SWIFT() : sent_header(false) {} ~RGWCopyObj_ObjStore_SWIFT() {} -- 2.39.5