#include "TosClientV2.h"
using namespace VolcengineTos;
std::string region = "Your Region";
std::string accessKey = std::getenv("TOS_ACCESS_KEY");
std::string secretKey = std::getenv("TOS_SECRET_KEY");
std::string bucketName = "examplebucket";
TosClientV2 client(region, accessKey, secretKey);
PutBucketLifecycleInput input(bucketName);
auto rule1 = LifecycleRule();
rule1.setPrefix("test1/");
rule1.setStatus(StatusType::StatusEnabled);
rule1.setExpiratioon(std::make_shared<Expiration>(60));
rule1.addTag(Tag("key1", "value1"));
rule1.addTag(Tag("key2", "value2"));
auto rule2 = LifecycleRule();
rule2.setPrefix("test2/");
rule2.setStatus(StatusType::StatusDisabled);
time_t expirationTime = time(nullptr);
tm* gmtmExpiration = gmtime(&expirationTime);
gmtmExpiration->tm_min = 0;
gmtmExpiration->tm_hour = 0;
gmtmExpiration->tm_sec = 0;
gmtmExpiration->tm_year = gmtmExpiration->tm_year + 1;
auto exactTime = timegm(gmtmExpiration);
rule2.setExpiratioon(exactTime);
auto rule3 = LifecycleRule();
rule3.setPrefix("test3/");
rule3.setStatus(StatusType::StatusDisabled);
auto transition = Transition();
transition.setDays(365);
transition.setStorageClass(StorageClassType::ARCHIVE_FR);
rule3.addTransition(transition);
auto transition1 = NoncurrentVersionTransition(10, StorageClassType::IA);
auto transition2 = NoncurrentVersionTransition(20, StorageClassType::ARCHIVE_FR);
rule3.setNoncurrentVersionExpiration(30);
std::vector<NoncurrentVersionTransition> noncurrentVersionStorageTransitions{transition1, transition2};
rule3.setNoncurrentVersionTransitions(noncurrentVersionStorageTransitions);
std::vector<LifecycleRule> rules{rule1, rule2, rule3};
auto output = client.putBucketLifecycle(input);
if (!output.isSuccess()) {
std::cout << "PutBucketLifecycle failed." << output.error().String() << std::endl;
std::cout << "PutBucketLifecycle success." << std::endl;