#include <iostream>
#include <include/types.h>
-#include <expat.h>
-
#include "include/str_list.h"
#include "rgw_lc.h"
#include "rgw_xml.h"
-
-
-using namespace std;
-
class LCID_S3 : public XMLObj
{
public:
string& to_str() { return data; }
};
+class LCDeleteMarker_S3 : public XMLObj
+{
+public:
+ LCDeleteMarker_S3() {}
+ ~LCDeleteMarker_S3() override {}
+ string& to_str() { return data; }
+};
+
class LCExpiration_S3 : public LCExpiration, public XMLObj
{
+private:
+ bool dm_expiration;
public:
- LCExpiration_S3() {}
+ LCExpiration_S3(): dm_expiration(false) {}
+ LCExpiration_S3(string _days, bool _dm_expiration) {
+ days = _days;
+ dm_expiration = _dm_expiration;
+ }
~LCExpiration_S3() override {}
bool xml_end(const char *el) override;
void to_xml(ostream& out) {
- out << "<Expiration>" << "<Days>" << days << "</Days>"<< "</Expiration>";
+ if (dm_expiration) {
+ out << "<Expiration>" << "<ExpiredObjectDeleteMarker>" << "true" << "</ExpiredObjectDeleteMarker>" << "</Expiration>";
+ } else {
+ out << "<Expiration>" << "<Days>" << days << "</Days>"<< "</Expiration>";
+ }
}
void dump_xml(Formatter *f) const {
- f->open_object_section("Expiration");
- encode_xml("Days", days, f);
- f->close_section(); // Expiration
+ f->open_object_section("Expiration");
+ if (dm_expiration) {
+ encode_xml("ExpiredObjectDeleteMarker", "true", f);
+ } else {
+ encode_xml("Days", days, f);
+ }
+ f->close_section(); // Expiration
+ }
+
+ void set_dm_expiration(bool _dm_expiration) {
+ dm_expiration = _dm_expiration;
+ }
+
+ bool get_dm_expiration() {
+ return dm_expiration;
}
};
encode_xml("ID", id, f);
encode_xml("Prefix", prefix, f);
encode_xml("Status", status, f);
- if (!expiration.empty()) {
- const LCExpiration_S3& expir = static_cast<const LCExpiration_S3&>(expiration);
+ if (!expiration.empty() || dm_expiration) {
+ LCExpiration_S3 expir(expiration.get_days_str(), dm_expiration);
expir.dump_xml(f);
}
if (!noncur_expiration.empty()) {