LifecycleRule.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /*
  2. * Copyright 2009-2017 Alibaba Cloud All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #pragma once
  17. #include <string>
  18. #include <vector>
  19. #include <alibabacloud/oss/Export.h>
  20. #include <alibabacloud/oss/Types.h>
  21. #include <alibabacloud/oss/model/Tagging.h>
  22. namespace AlibabaCloud
  23. {
  24. namespace OSS
  25. {
  26. class ALIBABACLOUD_OSS_EXPORT LifeCycleExpiration
  27. {
  28. public:
  29. LifeCycleExpiration();
  30. LifeCycleExpiration(uint32_t days);
  31. LifeCycleExpiration(const std::string& createdBeforeDate);
  32. void setDays(uint32_t days);
  33. void setCreatedBeforeDate(const std::string& date);
  34. uint32_t Days() const { return days_; }
  35. const std::string& CreatedBeforeDate() const { return createdBeforeDate_; }
  36. private:
  37. uint32_t days_;
  38. std::string createdBeforeDate_;
  39. };
  40. class ALIBABACLOUD_OSS_EXPORT LifeCycleTransition
  41. {
  42. public:
  43. LifeCycleTransition() = default;
  44. LifeCycleTransition(const LifeCycleExpiration& expiration, AlibabaCloud::OSS::StorageClass storageClass);
  45. void setExpiration(const LifeCycleExpiration& expiration);
  46. void setStorageClass(AlibabaCloud::OSS::StorageClass storageClass);
  47. const LifeCycleExpiration& Expiration() const { return expiration_; }
  48. LifeCycleExpiration& Expiration() { return expiration_; }
  49. AlibabaCloud::OSS::StorageClass StorageClass() const { return storageClass_; }
  50. private:
  51. LifeCycleExpiration expiration_;
  52. AlibabaCloud::OSS::StorageClass storageClass_;
  53. };
  54. using LifeCycleTransitionList = std::vector<LifeCycleTransition>;
  55. class ALIBABACLOUD_OSS_EXPORT LifecycleRule
  56. {
  57. public:
  58. LifecycleRule();
  59. const std::string& ID() const { return id_; }
  60. const std::string& Prefix() const { return prefix_; }
  61. RuleStatus Status() const { return status_;}
  62. const LifeCycleExpiration& Expiration() const { return expiration_; }
  63. const LifeCycleTransitionList& TransitionList() const { return transitionList_; }
  64. const LifeCycleExpiration& AbortMultipartUpload() const { return abortMultipartUpload_; }
  65. LifeCycleExpiration& Expiration() { return expiration_; }
  66. LifeCycleTransitionList& TransitionList() { return transitionList_; }
  67. LifeCycleExpiration& AbortMultipartUpload() { return abortMultipartUpload_; }
  68. const TagSet& Tags() const { return tagSet_; }
  69. TagSet& Tags() { return tagSet_; }
  70. void setID(const std::string& id) { id_ = id; }
  71. void setPrefix(const std::string& prefix) { prefix_ = prefix; }
  72. void setStatus(RuleStatus status) { status_ = status; }
  73. void setExpiration(const LifeCycleExpiration& expiration) { expiration_ = expiration; }
  74. void addTransition(const LifeCycleTransition&transition) { transitionList_.push_back(transition); }
  75. void setTransitionList(const LifeCycleTransitionList& transitionList) { transitionList_ = transitionList; }
  76. void setAbortMultipartUpload(const LifeCycleExpiration& expiration) { abortMultipartUpload_ = expiration; }
  77. void addTag(const Tag& tag) { tagSet_.push_back(tag); }
  78. void setTags(const TagSet& tags) { tagSet_ = tags; }
  79. bool hasExpiration() const;
  80. bool hasTransitionList() const;
  81. bool hasAbortMultipartUpload() const;
  82. bool operator==(const LifecycleRule& right) const;
  83. bool ExpiredObjectDeleteMarker() const { return expiredObjectDeleteMarker_; };
  84. const LifeCycleExpiration& NoncurrentVersionExpiration() const { return noncurrentVersionExpiration_; }
  85. const LifeCycleTransitionList& NoncurrentVersionTransitionList() const { return noncurrentVersionTransitionList_; }
  86. LifeCycleExpiration& NoncurrentVersionExpiration() { return noncurrentVersionExpiration_; }
  87. LifeCycleTransitionList& NoncurrentVersionTransitionList() { return noncurrentVersionTransitionList_; }
  88. void setExpiredObjectDeleteMarker(bool value) { expiredObjectDeleteMarker_ = value; };
  89. void setNoncurrentVersionExpiration(const LifeCycleExpiration& expiration) { noncurrentVersionExpiration_ = expiration; }
  90. void addNoncurrentVersionTransition(const LifeCycleTransition&transition) { noncurrentVersionTransitionList_.push_back(transition); }
  91. void setNoncurrentVersionTransitionList(const LifeCycleTransitionList& transitionList) { noncurrentVersionTransitionList_ = transitionList; }
  92. bool hasNoncurrentVersionExpiration() const;
  93. bool hasNoncurrentVersionTransitionList() const;
  94. private:
  95. std::string id_;
  96. std::string prefix_;
  97. RuleStatus status_;
  98. LifeCycleExpiration expiration_;
  99. LifeCycleTransitionList transitionList_;
  100. LifeCycleExpiration abortMultipartUpload_;
  101. TagSet tagSet_;
  102. bool expiredObjectDeleteMarker_;
  103. LifeCycleExpiration noncurrentVersionExpiration_;
  104. LifeCycleTransitionList noncurrentVersionTransitionList_;
  105. };
  106. using LifecycleRuleList = std::vector<LifecycleRule>;
  107. }
  108. }