]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/rgw/rgw_lc_s3.h
update sources to v12.1.1
[ceph.git] / ceph / src / rgw / rgw_lc_s3.h
index 53c5f7e8ba59eeaefc83d17f336a1f35c2a863c3..ed1af0c0053e3527d3ec27ac96742cf6e88c26b8 100644 (file)
@@ -42,6 +42,14 @@ public:
   string& to_str() { return data; }
 };
 
+class LCDate_S3 : public XMLObj
+{
+public:
+  LCDate_S3() {}
+  ~LCDate_S3() override {}
+  string& to_str() { return data; }
+};
+
 class LCDeleteMarker_S3 : public XMLObj
 {
 public:
@@ -56,26 +64,33 @@ private:
   bool dm_expiration;
 public:
   LCExpiration_S3(): dm_expiration(false) {}
-  LCExpiration_S3(string _days, bool _dm_expiration) {
+  LCExpiration_S3(string _days, string _date, bool _dm_expiration) {
     days = _days;
+    date = _date;
     dm_expiration = _dm_expiration;
   }
   ~LCExpiration_S3() override {}
 
   bool xml_end(const char *el) override;
   void to_xml(ostream& out) {
+    out << "<Expiration>";
     if (dm_expiration) {
-      out << "<Expiration>" << "<ExpiredObjectDeleteMarker>" << "true" << "</ExpiredObjectDeleteMarker>" << "</Expiration>";
+      out << "<ExpiredObjectDeleteMarker>" << "true" << "</ExpiredObjectDeleteMarker>";
+    } else if (!days.empty()){
+      out << "<Days>" << days << "</Days>";
     } else {
-      out << "<Expiration>" << "<Days>" << days << "</Days>"<< "</Expiration>";
+      out << "<Date>" << date << "</Date>";
     }
+    out << "</Expiration>";
   }
   void dump_xml(Formatter *f) const {
     f->open_object_section("Expiration");
     if (dm_expiration) {
       encode_xml("ExpiredObjectDeleteMarker", "true", f);
-    } else {
+    } else if (!days.empty()) {
       encode_xml("Days", days, f);
+    } else {
+      encode_xml("Date", date, f);
     }
     f->close_section(); // Expiration
   }
@@ -138,7 +153,7 @@ public:
     encode_xml("Prefix", prefix, f);
     encode_xml("Status", status, f);
     if (!expiration.empty() || dm_expiration) {
-      LCExpiration_S3 expir(expiration.get_days_str(), dm_expiration);
+      LCExpiration_S3 expir(expiration.get_days_str(), expiration.get_date(), dm_expiration);
       expir.dump_xml(f);
     }
     if (!noncur_expiration.empty()) {