initial commit
This commit is contained in:
@@ -0,0 +1,911 @@
|
||||
// Copyright (c) 2017, Tencent Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Author: sevenyou <sevenyou@tencent.com>
|
||||
// Created: 07/21/17
|
||||
// Description:
|
||||
|
||||
#ifndef BUCKET_REQ_H
|
||||
#define BUCKET_REQ_H
|
||||
#pragma once
|
||||
|
||||
#include "cos_defines.h"
|
||||
#include "request/base_req.h"
|
||||
#include "util/string_util.h"
|
||||
|
||||
namespace qcloud_cos {
|
||||
|
||||
class BucketReq : public BaseReq {
|
||||
public:
|
||||
BucketReq(const std::string& bucket_name) : m_bucket_name(bucket_name) { }
|
||||
virtual ~BucketReq() {}
|
||||
|
||||
// getter and setter
|
||||
std::string GetBucketName() const { return m_bucket_name; }
|
||||
void SetBucketName(const std::string& bucket_name) { m_bucket_name = bucket_name; }
|
||||
|
||||
private:
|
||||
std::string m_bucket_name;
|
||||
};
|
||||
|
||||
class HeadBucketReq : public BucketReq {
|
||||
public:
|
||||
HeadBucketReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
m_method = "HEAD";
|
||||
}
|
||||
|
||||
virtual ~HeadBucketReq() {}
|
||||
};
|
||||
|
||||
class PutBucketReq : public BucketReq {
|
||||
public:
|
||||
PutBucketReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
}
|
||||
|
||||
virtual ~PutBucketReq() {}
|
||||
|
||||
/// 定义Bucket的ACL属性,有效值:private,public-read-write,public-read
|
||||
/// 默认值:private
|
||||
void SetXCosAcl(const std::string& str) {
|
||||
AddHeader("x-cos-acl", str);
|
||||
}
|
||||
|
||||
/// 赋予被授权者读的权限.格式:x-cos-grant-read: id=" ",id=" ".
|
||||
/// 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>"
|
||||
/// 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
|
||||
void SetXCosGrantRead(const std::string& str) {
|
||||
AddHeader("x-cos-grant-read", str);
|
||||
}
|
||||
|
||||
/// 赋予被授权者写的权限,格式:x-cos-grant-write: id=" ",id=" "./
|
||||
/// 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
|
||||
/// 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
|
||||
void SetXCosGrantWrite(const std::string& str) {
|
||||
AddHeader("x-cos-grant-write", str);
|
||||
}
|
||||
|
||||
/// 赋予被授权者读写权限.格式:x-cos-grant-full-control: id=" ",id=" ".
|
||||
/// 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
|
||||
/// 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
|
||||
void SetXCosGrantFullControl(const std::string& str) {
|
||||
AddHeader("x-cos-grant-full-control", str);
|
||||
}
|
||||
};
|
||||
|
||||
class GetBucketReq : public BucketReq {
|
||||
public:
|
||||
GetBucketReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
}
|
||||
|
||||
virtual ~GetBucketReq() {}
|
||||
|
||||
/// \@brief 设置前缀,用来规定返回的文件前缀地址
|
||||
void SetPrefix(const std::string& prefix) {
|
||||
AddParam("prefix", prefix);
|
||||
}
|
||||
|
||||
/// \brief 设置定界符,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,
|
||||
/// 定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始
|
||||
void SetDelimiter(const std::string& delimiter) {
|
||||
AddParam("delimiter", delimiter);
|
||||
}
|
||||
|
||||
/// \brief 规定返回值的编码方式,可选值:url
|
||||
void SetEncodingType(const std::string& encoding_type) {
|
||||
AddParam("encoding-type", encoding_type);
|
||||
}
|
||||
|
||||
/// \brief 默认以 UTF-8 二进制顺序列出条目,所有列出条目从marker开始
|
||||
void SetMarker(const std::string& marker) {
|
||||
AddParam("marker", marker);
|
||||
}
|
||||
|
||||
/// \brief 单次返回最大的条目数量,默认1000
|
||||
void SetMaxKeys(uint64_t max_keys) {
|
||||
AddParam("max-keys", StringUtil::Uint64ToString(max_keys));
|
||||
}
|
||||
};
|
||||
|
||||
class ListMultipartUploadReq : public BucketReq {
|
||||
public:
|
||||
ListMultipartUploadReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("uploads", "");
|
||||
}
|
||||
|
||||
virtual ~ListMultipartUploadReq() {}
|
||||
|
||||
void SetPrefix(const std::string& prefix) {
|
||||
AddParam("prefix", prefix);
|
||||
}
|
||||
|
||||
void SetDelimiter(const std::string& delimiter) {
|
||||
AddParam("delimiter", delimiter);
|
||||
}
|
||||
|
||||
void SetEncodingType(const std::string& encoding_type) {
|
||||
AddParam("encoding-type", encoding_type);
|
||||
}
|
||||
|
||||
void SetKeyMarker(const std::string& marker) {
|
||||
AddParam("key-marker", marker);
|
||||
}
|
||||
|
||||
void SetMaxUploads(const std::string& max_uploads) {
|
||||
AddParam("max-uploads", max_uploads);
|
||||
}
|
||||
|
||||
void SetUploadIdMarker(const std::string& upload_id_marker) {
|
||||
AddParam("upload-id-marker", upload_id_marker);
|
||||
}
|
||||
};
|
||||
|
||||
class DeleteBucketReq : public BucketReq {
|
||||
public:
|
||||
DeleteBucketReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("DELETE");
|
||||
}
|
||||
|
||||
~DeleteBucketReq() {}
|
||||
};
|
||||
|
||||
class GetBucketVersioningReq : public BucketReq {
|
||||
public:
|
||||
GetBucketVersioningReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("versioning", "");
|
||||
}
|
||||
|
||||
virtual ~GetBucketVersioningReq() {}
|
||||
};
|
||||
|
||||
class PutBucketVersioningReq : public BucketReq {
|
||||
public:
|
||||
PutBucketVersioningReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name), m_status(true) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("versioning", "");
|
||||
}
|
||||
|
||||
virtual ~PutBucketVersioningReq() {}
|
||||
|
||||
/// \brief 版本是否开启
|
||||
void SetStatus(bool is_enable) { m_status = is_enable; }
|
||||
|
||||
bool GetStatus() const { return m_status; }
|
||||
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
|
||||
private:
|
||||
bool m_status;
|
||||
};
|
||||
|
||||
class GetBucketReplicationReq : public BucketReq {
|
||||
public:
|
||||
GetBucketReplicationReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("replication", "");
|
||||
}
|
||||
|
||||
virtual ~GetBucketReplicationReq() {}
|
||||
};
|
||||
|
||||
class PutBucketReplicationReq : public BucketReq {
|
||||
public:
|
||||
PutBucketReplicationReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("replication", "");
|
||||
}
|
||||
|
||||
virtual ~PutBucketReplicationReq() {}
|
||||
|
||||
void SetRole(const std::string& role) { m_role = role; }
|
||||
|
||||
void AddReplicationRule(const ReplicationRule& rule) {
|
||||
m_rules.push_back(rule);
|
||||
}
|
||||
|
||||
void SetReplicationRule(const std::vector<ReplicationRule>& rules) {
|
||||
m_rules = rules;
|
||||
}
|
||||
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
|
||||
private:
|
||||
std::string m_role;
|
||||
std::vector<ReplicationRule> m_rules;
|
||||
};
|
||||
|
||||
class DeleteBucketReplicationReq : public BucketReq {
|
||||
public:
|
||||
DeleteBucketReplicationReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("Delete");
|
||||
SetPath("/");
|
||||
AddParam("replication", "");
|
||||
}
|
||||
|
||||
virtual ~DeleteBucketReplicationReq() {}
|
||||
};
|
||||
|
||||
class GetBucketLifecycleReq : public BucketReq {
|
||||
public:
|
||||
GetBucketLifecycleReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("lifecycle", "");
|
||||
}
|
||||
|
||||
virtual ~GetBucketLifecycleReq() {}
|
||||
};
|
||||
|
||||
class PutBucketLifecycleReq : public BucketReq {
|
||||
public:
|
||||
PutBucketLifecycleReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("lifecycle", "");
|
||||
}
|
||||
|
||||
virtual ~PutBucketLifecycleReq() {}
|
||||
|
||||
void AddRule(const LifecycleRule& rule) {
|
||||
m_rules.push_back(rule);
|
||||
}
|
||||
|
||||
void SetRule(const std::vector<LifecycleRule>& rules) {
|
||||
m_rules = rules;
|
||||
}
|
||||
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
|
||||
private:
|
||||
std::vector<LifecycleRule> m_rules;
|
||||
};
|
||||
|
||||
class DeleteBucketLifecycleReq : public BucketReq {
|
||||
public:
|
||||
DeleteBucketLifecycleReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("DELETE");
|
||||
SetPath("/");
|
||||
AddParam("lifecycle", "");
|
||||
}
|
||||
|
||||
virtual ~DeleteBucketLifecycleReq() {}
|
||||
};
|
||||
|
||||
class GetBucketACLReq : public BucketReq {
|
||||
public:
|
||||
GetBucketACLReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("acl", "");
|
||||
}
|
||||
|
||||
virtual ~GetBucketACLReq() {}
|
||||
};
|
||||
|
||||
class PutBucketACLReq : public BucketReq {
|
||||
public:
|
||||
PutBucketACLReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("acl", "");
|
||||
}
|
||||
|
||||
virtual ~PutBucketACLReq() {}
|
||||
|
||||
/// 定义Bucket的ACL属性,有效值:private,public-read-write,public-read
|
||||
/// 默认值:private
|
||||
void SetXCosAcl(const std::string& str) {
|
||||
AddHeader("x-cos-acl", str);
|
||||
}
|
||||
|
||||
/// 赋予被授权者读的权限.格式:x-cos-grant-read: id=" ",id=" ".
|
||||
/// 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>"
|
||||
/// 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
|
||||
void SetXCosGrantRead(const std::string& str) {
|
||||
AddHeader("x-cos-grant-read", str);
|
||||
}
|
||||
|
||||
/// 赋予被授权者写的权限,格式:x-cos-grant-write: id=" ",id=" "./
|
||||
/// 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
|
||||
/// 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
|
||||
void SetXCosGrantWrite(const std::string& str) {
|
||||
AddHeader("x-cos-grant-write", str);
|
||||
}
|
||||
|
||||
/// 赋予被授权者读写权限.格式:x-cos-grant-full-control: id=" ",id=" ".
|
||||
/// 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
|
||||
/// 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
|
||||
void SetXCosGrantFullControl(const std::string& str) {
|
||||
AddHeader("x-cos-grant-full-control", str);
|
||||
}
|
||||
|
||||
/// Bucket 持有者 ID
|
||||
void SetOwner(const Owner& owner) {
|
||||
m_owner = owner;
|
||||
}
|
||||
|
||||
/// 设置被授权者信息与权限信息
|
||||
void SetAccessControlList(const std::vector<Grant>& grants) {
|
||||
m_acl = grants;
|
||||
}
|
||||
|
||||
/// 添加单个 Bucket 的授权信息
|
||||
void AddAccessControlList(const Grant& grant) {
|
||||
m_acl.push_back(grant);
|
||||
}
|
||||
|
||||
/// 清空权限信息
|
||||
void ClearAccessControlList() {
|
||||
std::vector<Grant> tmp;
|
||||
m_acl.swap(tmp);
|
||||
}
|
||||
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
|
||||
private:
|
||||
Owner m_owner;
|
||||
std::vector<Grant> m_acl;
|
||||
};
|
||||
|
||||
class DeleteBucketACLReq : public BucketReq {
|
||||
public:
|
||||
DeleteBucketACLReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("DELETE");
|
||||
}
|
||||
|
||||
virtual ~DeleteBucketACLReq() {}
|
||||
};
|
||||
|
||||
class GetBucketCORSReq : public BucketReq {
|
||||
public:
|
||||
GetBucketCORSReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("cors", "");
|
||||
}
|
||||
|
||||
virtual ~GetBucketCORSReq() {}
|
||||
};
|
||||
|
||||
class PutBucketCORSReq : public BucketReq {
|
||||
public:
|
||||
PutBucketCORSReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("cors", "");
|
||||
AddHeader("Content-Type", "application/xml");
|
||||
}
|
||||
|
||||
virtual ~PutBucketCORSReq() {}
|
||||
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
|
||||
void AddRule(const CORSRule& rule) { m_rules.push_back(rule); }
|
||||
|
||||
void SetRules(const std::vector<CORSRule>& rules) { m_rules = rules; }
|
||||
|
||||
private:
|
||||
std::vector<CORSRule> m_rules;
|
||||
};
|
||||
|
||||
class DeleteBucketCORSReq : public BucketReq {
|
||||
public:
|
||||
DeleteBucketCORSReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("DELETE");
|
||||
SetPath("/");
|
||||
AddParam("cors", "");
|
||||
}
|
||||
|
||||
virtual ~DeleteBucketCORSReq() {}
|
||||
};
|
||||
|
||||
class GetBucketLocationReq : public BucketReq {
|
||||
public:
|
||||
GetBucketLocationReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("location", "");
|
||||
}
|
||||
|
||||
virtual ~GetBucketLocationReq() {}
|
||||
};
|
||||
|
||||
class GetBucketObjectVersionsReq : public BucketReq {
|
||||
public:
|
||||
GetBucketObjectVersionsReq(const std::string& bucket_name)
|
||||
: BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("versions", "");
|
||||
}
|
||||
|
||||
virtual ~GetBucketObjectVersionsReq() {}
|
||||
|
||||
/// \@brief 设置前缀,用来规定返回的文件前缀地址
|
||||
void SetPrefix(const std::string& prefix) {
|
||||
AddParam("prefix", prefix);
|
||||
}
|
||||
|
||||
/// \brief 设置定界符,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,
|
||||
/// 定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始
|
||||
void SetDelimiter(const std::string& delimiter) {
|
||||
AddParam("delimiter", delimiter);
|
||||
}
|
||||
|
||||
/// \brief 规定返回值的编码方式,可选值:url
|
||||
void SetEncodingType(const std::string& encoding_type) {
|
||||
AddParam("encoding-type", encoding_type);
|
||||
}
|
||||
|
||||
/// \brief 默认以 UTF-8 二进制顺序列出条目,所有列出条目从marker开始
|
||||
void SetKeyMarker(const std::string& marker) {
|
||||
AddParam("key-marker", marker);
|
||||
}
|
||||
|
||||
/// \brief 单次返回最大的条目数量,默认1000
|
||||
void SetMaxKeys(uint64_t max_keys) {
|
||||
AddParam("max-keys", StringUtil::Uint64ToString(max_keys));
|
||||
}
|
||||
|
||||
void SetVersionIdMarker(const std::string& version_id_marker) {
|
||||
AddParam("version-id-marker", version_id_marker);
|
||||
}
|
||||
};
|
||||
|
||||
class PutBucketLoggingReq : public BucketReq {
|
||||
public:
|
||||
PutBucketLoggingReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name), m_mask(0x00000000u) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("logging", "");
|
||||
}
|
||||
virtual ~PutBucketLoggingReq() {}
|
||||
|
||||
void SetLoggingEnabled(const LoggingEnabled& rules) {
|
||||
m_mask = m_mask | 0x00000001u;
|
||||
m_rules = rules;
|
||||
}
|
||||
bool HasLoggingEnabled() const {
|
||||
return (m_mask & 0x00000001u) != 0;
|
||||
}
|
||||
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
private:
|
||||
uint64_t m_mask;
|
||||
LoggingEnabled m_rules;
|
||||
};
|
||||
|
||||
class GetBucketLoggingReq : public BucketReq {
|
||||
public:
|
||||
GetBucketLoggingReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("logging", "");
|
||||
}
|
||||
virtual ~GetBucketLoggingReq() {}
|
||||
};
|
||||
|
||||
class PutBucketDomainReq : public BucketReq {
|
||||
public:
|
||||
PutBucketDomainReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("domain", "");
|
||||
}
|
||||
virtual ~PutBucketDomainReq() {}
|
||||
|
||||
void SetDomainRule(const DomainRule& rules) {
|
||||
m_rules = rules;
|
||||
}
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
|
||||
private:
|
||||
DomainRule m_rules;
|
||||
};
|
||||
|
||||
class GetBucketDomainReq : public BucketReq {
|
||||
public:
|
||||
GetBucketDomainReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("domain", "");
|
||||
}
|
||||
virtual ~GetBucketDomainReq() {}
|
||||
};
|
||||
|
||||
class PutBucketWebsiteReq : public BucketReq {
|
||||
public:
|
||||
PutBucketWebsiteReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name), m_mask(0x00000000u),
|
||||
m_suffix(""), m_protocol(""), m_key(""){
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("website", "");
|
||||
}
|
||||
|
||||
virtual ~PutBucketWebsiteReq() {}
|
||||
|
||||
void SetSuffix(const std::string& suffix) {
|
||||
m_mask = m_mask | 0x00000001u;
|
||||
m_suffix = suffix;
|
||||
}
|
||||
|
||||
void SetProtocol(const std::string& protocol) {
|
||||
m_mask = m_mask | 0x00000002u;
|
||||
m_protocol = protocol;
|
||||
}
|
||||
|
||||
void SetKey(const std::string& key) {
|
||||
m_mask = m_mask | 0x00000004u;
|
||||
m_key = key;
|
||||
}
|
||||
|
||||
std::string GetSuffix() const {
|
||||
return m_suffix;
|
||||
}
|
||||
|
||||
std::string GetProtocol() const {
|
||||
return m_protocol;
|
||||
}
|
||||
|
||||
std::string GetKey() const {
|
||||
return m_key;
|
||||
}
|
||||
|
||||
bool HasSuffix() const {
|
||||
return (m_mask & 0x00000001u) != 0;
|
||||
}
|
||||
|
||||
bool HasProtocol() const {
|
||||
return (m_mask & 0x00000002u) != 0;
|
||||
}
|
||||
|
||||
bool HasKey() const {
|
||||
return (m_mask & 0x00000004u) != 0;
|
||||
}
|
||||
|
||||
bool HasRoutingRules() const {
|
||||
return !m_routingrules.empty();
|
||||
}
|
||||
|
||||
/// 设置重定向规则
|
||||
void SetRoutingRules(const std::vector<RoutingRule>& routingrules) {
|
||||
m_routingrules = routingrules;
|
||||
}
|
||||
|
||||
/// 添加单个rule
|
||||
void AddRoutingRule(const RoutingRule& routingrule) {
|
||||
m_routingrules.push_back(routingrule);
|
||||
}
|
||||
|
||||
/// 清空重定向规则
|
||||
void ClearRoutingRules() {
|
||||
std::vector<RoutingRule> tmp;
|
||||
m_routingrules.swap(tmp);
|
||||
}
|
||||
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
|
||||
private:
|
||||
uint64_t m_mask;
|
||||
std::string m_suffix;
|
||||
std::string m_protocol;
|
||||
std::string m_key;
|
||||
std::vector<RoutingRule> m_routingrules;
|
||||
};
|
||||
|
||||
class GetBucketWebsiteReq : public BucketReq {
|
||||
public:
|
||||
GetBucketWebsiteReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name) {
|
||||
SetMethod("Get");
|
||||
SetPath("/");
|
||||
AddParam("website", "");
|
||||
}
|
||||
|
||||
virtual ~GetBucketWebsiteReq() {}
|
||||
};
|
||||
|
||||
class DeleteBucketWebsiteReq : public BucketReq {
|
||||
public:
|
||||
DeleteBucketWebsiteReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name) {
|
||||
SetMethod("DELETE");
|
||||
SetPath("/");
|
||||
AddParam("website", "");
|
||||
}
|
||||
|
||||
virtual ~DeleteBucketWebsiteReq() {}
|
||||
};
|
||||
|
||||
class PutBucketTaggingReq : public BucketReq {
|
||||
public:
|
||||
PutBucketTaggingReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("tagging", "");
|
||||
}
|
||||
|
||||
void SetTagSet(std::vector<Tag>& tagset) {
|
||||
m_tagset = tagset;
|
||||
}
|
||||
|
||||
std::vector<Tag> GetTagSet() {
|
||||
return m_tagset;
|
||||
}
|
||||
|
||||
//清除tag规则.
|
||||
void ClearTagSet() {
|
||||
std::vector<Tag> temp;
|
||||
m_tagset.swap(temp);
|
||||
}
|
||||
|
||||
/// 添加单个tag.
|
||||
void AddTag(const Tag& tag) {
|
||||
m_tagset.push_back(tag);
|
||||
}
|
||||
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
virtual ~PutBucketTaggingReq() {}
|
||||
private:
|
||||
std::vector<Tag> m_tagset;
|
||||
};
|
||||
|
||||
|
||||
class GetBucketTaggingReq : public BucketReq {
|
||||
public:
|
||||
GetBucketTaggingReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("tagging", "");
|
||||
}
|
||||
virtual ~GetBucketTaggingReq() {}
|
||||
};
|
||||
|
||||
class DeleteBucketTaggingReq : public BucketReq {
|
||||
public:
|
||||
DeleteBucketTaggingReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name) {
|
||||
SetMethod("DELETE");
|
||||
SetPath("/");
|
||||
AddParam("tagging", "");
|
||||
}
|
||||
|
||||
virtual ~DeleteBucketTaggingReq() {}
|
||||
};
|
||||
|
||||
|
||||
class PutBucketInventoryReq : public BucketReq {
|
||||
public:
|
||||
PutBucketInventoryReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name), m_mask(0x00000000u) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("inventory", "");
|
||||
}
|
||||
|
||||
void SetInventory(Inventory& inventory) {
|
||||
m_mask = m_mask | 0x00000001u;
|
||||
m_inventory = inventory;
|
||||
}
|
||||
|
||||
bool HasInventory() const {
|
||||
return (m_mask & 0x00000001u) != 0;
|
||||
}
|
||||
|
||||
const Inventory& GetInventory() const {
|
||||
return m_inventory;
|
||||
}
|
||||
|
||||
void SetId(const std::string id) {
|
||||
m_mask = m_mask | 0x00000001u;
|
||||
m_id = id;
|
||||
AddParam("id", m_id);
|
||||
}
|
||||
|
||||
std::string GetId() const {
|
||||
return m_id;
|
||||
}
|
||||
|
||||
bool HasId() const {
|
||||
return (m_mask & 0x00000001u) != 0;
|
||||
}
|
||||
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
virtual ~PutBucketInventoryReq() {}
|
||||
|
||||
private:
|
||||
uint64_t m_mask;
|
||||
std::string m_id;
|
||||
Inventory m_inventory;
|
||||
};
|
||||
|
||||
|
||||
class GetBucketInventoryReq : public BucketReq {
|
||||
public:
|
||||
GetBucketInventoryReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name), m_mask(0x00000000u) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("inventory", "");
|
||||
}
|
||||
|
||||
void SetId(const std::string id) {
|
||||
m_mask = m_mask | 0x00000001u;
|
||||
m_id = id;
|
||||
AddParam("id", m_id);
|
||||
}
|
||||
|
||||
std::string GetId() const {
|
||||
return m_id;
|
||||
}
|
||||
|
||||
bool HasId() const {
|
||||
return (m_mask & 0x00000001u) != 0;
|
||||
}
|
||||
|
||||
virtual ~GetBucketInventoryReq() {}
|
||||
|
||||
private:
|
||||
uint64_t m_mask;
|
||||
std::string m_id;
|
||||
};
|
||||
|
||||
class ListBucketInventoryConfigurationsReq : public BucketReq {
|
||||
public:
|
||||
ListBucketInventoryConfigurationsReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name), m_mask(0x00000000u) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("inventory", "");
|
||||
}
|
||||
|
||||
void SetContinuationToken(const std::string continuation_token) {
|
||||
m_mask = m_mask | 0x00000001u;
|
||||
m_continuation_token = continuation_token;
|
||||
AddParam("continuation-token", m_continuation_token);
|
||||
}
|
||||
|
||||
std::string GetContinuationToken() const {
|
||||
return m_continuation_token;
|
||||
}
|
||||
|
||||
bool HasContinuationToken() const {
|
||||
return (m_mask & 0x00000001u) != 0;
|
||||
}
|
||||
|
||||
virtual ~ListBucketInventoryConfigurationsReq() {}
|
||||
|
||||
private:
|
||||
uint64_t m_mask;
|
||||
std::string m_continuation_token;
|
||||
};
|
||||
|
||||
class DeleteBucketInventoryReq : public BucketReq {
|
||||
public:
|
||||
DeleteBucketInventoryReq (const std::string& bucket_name)
|
||||
:BucketReq(bucket_name), m_mask(0x00000000u), m_id("") {
|
||||
SetMethod("DELETE");
|
||||
SetPath("/");
|
||||
AddParam("inventory", "");
|
||||
}
|
||||
|
||||
void SetId(const std::string id) {
|
||||
m_mask = m_mask | 0x00000001u;
|
||||
m_id = id;
|
||||
AddParam("id", m_id);
|
||||
}
|
||||
|
||||
std::string GetId() const {
|
||||
return m_id;
|
||||
}
|
||||
|
||||
bool HasId() const {
|
||||
return (m_mask & 0x00000001u) != 0;
|
||||
}
|
||||
|
||||
virtual ~DeleteBucketInventoryReq() {}
|
||||
|
||||
private:
|
||||
uint64_t m_mask;
|
||||
std::string m_id;
|
||||
};
|
||||
|
||||
/// \brief: 列举直播通道请求
|
||||
class ListLiveChannelReq : public BucketReq {
|
||||
public:
|
||||
ListLiveChannelReq(const std::string& bucket_name)
|
||||
:BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("live", "");
|
||||
}
|
||||
void SetMaxKeys(uint32_t max_keys) {
|
||||
AddParam("max-keys", StringUtil::IntToString(max_keys));
|
||||
}
|
||||
void SetMarker(const std::string& marker) {
|
||||
AddParam("marker", marker);
|
||||
}
|
||||
void SetPrefix(const std::string& prefix) {
|
||||
AddParam("prefix", prefix);
|
||||
}
|
||||
virtual ~ListLiveChannelReq() {}
|
||||
};
|
||||
|
||||
/// \brief: 配置存储桶智能分层特性
|
||||
class PutBucketIntelligentTieringReq : public BucketReq {
|
||||
public:
|
||||
PutBucketIntelligentTieringReq(const std::string& bucket_name)
|
||||
:BucketReq(bucket_name), m_status(false), m_days(30) {
|
||||
SetMethod("PUT");
|
||||
SetPath("/");
|
||||
AddParam("intelligenttiering", "");
|
||||
}
|
||||
virtual ~PutBucketIntelligentTieringReq() {}
|
||||
|
||||
/// \brief 设置智能分层的状态,true表示Enabled,false表示Suspended
|
||||
void SetStatus(bool is_enable) { m_status = is_enable; }
|
||||
|
||||
/// \brief 指定智能分层存储配置中标准层数据转换为低频层数据的天数限制,默认值为30天
|
||||
void SetDays(uint32_t days) {
|
||||
m_days = days;
|
||||
}
|
||||
|
||||
bool GenerateRequestBody(std::string* body) const;
|
||||
|
||||
private:
|
||||
bool m_status;
|
||||
uint32_t m_days;
|
||||
};
|
||||
|
||||
/// \brief: 获取存储桶智能分层配置
|
||||
class GetBucketIntelligentTieringReq : public BucketReq {
|
||||
public:
|
||||
GetBucketIntelligentTieringReq(const std::string& bucket_name)
|
||||
:BucketReq(bucket_name) {
|
||||
SetMethod("GET");
|
||||
SetPath("/");
|
||||
AddParam("intelligenttiering", "");
|
||||
}
|
||||
virtual ~GetBucketIntelligentTieringReq() {}
|
||||
};
|
||||
|
||||
} // namespace qcloud_cos
|
||||
|
||||
#endif // BUCKET_REQ_H
|
||||
Reference in New Issue
Block a user