initial commit
This commit is contained in:
@@ -0,0 +1,647 @@
|
||||
// Copyright (c) 2017, Tencent Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Author: sevenyou <sevenyou@tencent.com>
|
||||
// Created: 07/21/17
|
||||
// Description:
|
||||
|
||||
#ifndef BUCKET_RESP_H
|
||||
#define BUCKET_RESP_H
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "cos_config.h"
|
||||
#include "cos_defines.h"
|
||||
#include "response/base_resp.h"
|
||||
|
||||
#include "rapidxml/1.13/rapidxml.hpp"
|
||||
#include "rapidxml/1.13/rapidxml_print.hpp"
|
||||
#include "rapidxml/1.13/rapidxml_utils.hpp"
|
||||
|
||||
namespace qcloud_cos {
|
||||
|
||||
class PutBucketResp : public BaseResp {
|
||||
public:
|
||||
PutBucketResp() {}
|
||||
virtual ~PutBucketResp() {}
|
||||
};
|
||||
|
||||
class HeadBucketResp : public BaseResp {
|
||||
public:
|
||||
HeadBucketResp() {}
|
||||
virtual ~HeadBucketResp() {}
|
||||
};
|
||||
|
||||
class GetBucketResp : public BaseResp {
|
||||
public:
|
||||
GetBucketResp() {}
|
||||
virtual ~GetBucketResp() {}
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
/// \brief 获取Bucket中Object对应的元信息
|
||||
std::vector<Content> GetContents() const { return m_contents; }
|
||||
|
||||
/// \brief Bucket名称
|
||||
std::string GetName() const { return m_name; }
|
||||
|
||||
/// \brief 获取定界符
|
||||
std::string GetDelimiter() const { return m_delimiter; }
|
||||
|
||||
/// \brief 编码格式
|
||||
std::string GetEncodingType() const { return m_encoding_type; }
|
||||
|
||||
/// \brief 返回的文件前缀
|
||||
std::string GetPrefix() const { return m_prefix; }
|
||||
|
||||
/// \brief 默认以UTF-8二进制顺序列出条目,所有列出条目从marker开始
|
||||
std::string GetMarker() const { return m_marker; }
|
||||
|
||||
/// \brief 单次响应请求内返回结果的最大的条目数量
|
||||
uint64_t GetMaxKeys() const { return m_max_keys; }
|
||||
|
||||
/// \brief 响应请求条目是否被截断,布尔值:true,false
|
||||
bool IsTruncated() const { return m_is_truncated; }
|
||||
|
||||
/// \brief 假如返回条目被截断,则返回 NextMarker 就是下一个条目的起点
|
||||
std::string GetNextMarker() const { return m_next_marker; }
|
||||
|
||||
/// \brief 将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix
|
||||
std::vector<std::string> GetCommonPrefixes() const { return m_common_prefixes; }
|
||||
|
||||
private:
|
||||
std::vector<Content> m_contents;
|
||||
std::string m_name;
|
||||
std::string m_encoding_type;
|
||||
std::string m_delimiter;
|
||||
std::string m_prefix;
|
||||
std::string m_marker;
|
||||
uint64_t m_max_keys;
|
||||
bool m_is_truncated;
|
||||
std::string m_next_marker;
|
||||
std::vector<std::string> m_common_prefixes;
|
||||
};
|
||||
|
||||
class DeleteBucketResp : public BaseResp {
|
||||
public:
|
||||
DeleteBucketResp() {}
|
||||
virtual ~DeleteBucketResp() {}
|
||||
};
|
||||
|
||||
class GetBucketVersioningResp : public BaseResp {
|
||||
public:
|
||||
GetBucketVersioningResp() : m_status(0) {}
|
||||
virtual ~GetBucketVersioningResp() {}
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
/// \brief 返回bucket的版本状态,0: 从未开启版本管理, 1: 版本管理生效中, 2: 暂停
|
||||
/// 区别于PutBucketVersioning, 一个Bucket可能处于三种状态
|
||||
int GetStatus() const { return m_status; }
|
||||
|
||||
private:
|
||||
int m_status;
|
||||
};
|
||||
|
||||
class PutBucketVersioningResp : public BaseResp {
|
||||
public:
|
||||
PutBucketVersioningResp() {}
|
||||
virtual ~PutBucketVersioningResp() {}
|
||||
};
|
||||
|
||||
class GetBucketReplicationResp : public BaseResp {
|
||||
public:
|
||||
GetBucketReplicationResp() {}
|
||||
virtual ~GetBucketReplicationResp() {}
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
std::string GetRole() const { return m_role; }
|
||||
|
||||
std::vector<ReplicationRule> GetRules() const { return m_rules; }
|
||||
|
||||
private:
|
||||
std::string m_role;
|
||||
std::vector<ReplicationRule> m_rules;
|
||||
};
|
||||
|
||||
class PutBucketReplicationResp : public BaseResp {
|
||||
public:
|
||||
PutBucketReplicationResp() {}
|
||||
virtual ~PutBucketReplicationResp() {}
|
||||
};
|
||||
|
||||
class DeleteBucketReplicationResp : public BaseResp {
|
||||
public:
|
||||
DeleteBucketReplicationResp() {}
|
||||
virtual ~DeleteBucketReplicationResp() {}
|
||||
};
|
||||
|
||||
class GetBucketLifecycleResp : public BaseResp {
|
||||
public:
|
||||
GetBucketLifecycleResp() {}
|
||||
virtual ~GetBucketLifecycleResp() {}
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
std::vector<LifecycleRule> GetRules() const { return m_rules; }
|
||||
|
||||
private:
|
||||
std::vector<LifecycleRule> m_rules;
|
||||
};
|
||||
|
||||
class PutBucketLifecycleResp : public BaseResp {
|
||||
public:
|
||||
PutBucketLifecycleResp() {}
|
||||
virtual ~PutBucketLifecycleResp() {}
|
||||
};
|
||||
|
||||
class DeleteBucketLifecycleResp : public BaseResp {
|
||||
public:
|
||||
DeleteBucketLifecycleResp() {}
|
||||
virtual ~DeleteBucketLifecycleResp() {}
|
||||
};
|
||||
|
||||
class GetBucketACLResp : public BaseResp {
|
||||
public:
|
||||
GetBucketACLResp() {}
|
||||
virtual ~GetBucketACLResp() {}
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
std::string GetOwnerID() const { return m_owner_id; }
|
||||
std::string GetOwnerDisplayName() const { return m_owner_display_name; }
|
||||
std::vector<Grant> GetAccessControlList() const { return m_acl; }
|
||||
|
||||
private:
|
||||
std::string m_owner_id;
|
||||
std::string m_owner_display_name;
|
||||
std::vector<Grant> m_acl;
|
||||
};
|
||||
|
||||
// TODO
|
||||
class ListMultipartUploadResp : public BaseResp {
|
||||
public:
|
||||
ListMultipartUploadResp() {}
|
||||
virtual ~ListMultipartUploadResp() {}
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
/// \brief 获取Bucket中Object对应的元信息
|
||||
std::vector<Upload> GetUpload() const { return m_upload; }
|
||||
|
||||
/// \brief Bucket名称
|
||||
std::string GetName() const { return m_name; }
|
||||
|
||||
/// \brief 编码格式
|
||||
std::string GetEncodingType() const { return m_encoding_type; }
|
||||
|
||||
/// \brief 默认以UTF-8二进制顺序列出条目,所有列出条目从marker开始
|
||||
std::string GetMarker() const { return m_marker; }
|
||||
|
||||
std::string GetUploadIdMarker() const { return m_uploadid_marker; }
|
||||
|
||||
std::string GetNextKeyMarker() const { return m_nextkey_marker; }
|
||||
|
||||
std::string GetNextUploadIdMarker() const { return m_nextuploadid_marker; }
|
||||
|
||||
std::string GetMaxUploads () const { return m_max_uploads; }
|
||||
|
||||
/// \brief 响应请求条目是否被截断,布尔值:true,false
|
||||
bool IsTruncated() const { return m_is_truncated; }
|
||||
|
||||
/// \brief 返回的文件前缀
|
||||
std::string GetPrefix() const { return m_prefix; }
|
||||
|
||||
/// \brief 获取定界符
|
||||
std::string GetDelimiter() const { return m_delimiter; }
|
||||
|
||||
/// \brief 将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix
|
||||
std::vector<std::string> GetCommonPrefixes() const { return m_common_prefixes; }
|
||||
|
||||
private:
|
||||
std::vector<Upload> m_upload;
|
||||
std::string m_name;
|
||||
std::string m_encoding_type;
|
||||
std::string m_delimiter;
|
||||
std::string m_prefix;
|
||||
std::string m_marker;
|
||||
std::string m_uploadid_marker;
|
||||
std::string m_nextkey_marker;
|
||||
std::string m_nextuploadid_marker;
|
||||
std::string m_max_uploads;
|
||||
bool m_is_truncated;
|
||||
std::vector<std::string> m_common_prefixes;
|
||||
|
||||
};
|
||||
|
||||
class PutBucketACLResp : public BaseResp {
|
||||
public:
|
||||
PutBucketACLResp() {}
|
||||
virtual ~PutBucketACLResp() {}
|
||||
};
|
||||
|
||||
class GetBucketCORSResp : public BaseResp {
|
||||
public:
|
||||
GetBucketCORSResp() {}
|
||||
virtual ~GetBucketCORSResp() {}
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
std::vector<CORSRule> GetCORSRules() const { return m_rules; }
|
||||
|
||||
private:
|
||||
std::vector<CORSRule> m_rules;
|
||||
};
|
||||
|
||||
class PutBucketCORSResp : public BaseResp {
|
||||
public:
|
||||
PutBucketCORSResp() {}
|
||||
virtual ~PutBucketCORSResp() {}
|
||||
};
|
||||
|
||||
class DeleteBucketCORSResp : public BaseResp {
|
||||
public:
|
||||
DeleteBucketCORSResp() {}
|
||||
virtual ~DeleteBucketCORSResp() {}
|
||||
};
|
||||
|
||||
class GetBucketLocationResp : public BaseResp {
|
||||
public:
|
||||
GetBucketLocationResp() {}
|
||||
virtual ~GetBucketLocationResp() {}
|
||||
|
||||
std::string GetLocation() const { return m_location; }
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
private:
|
||||
std::string m_location;
|
||||
};
|
||||
|
||||
class GetBucketObjectVersionsResp : public BaseResp {
|
||||
public:
|
||||
GetBucketObjectVersionsResp() {}
|
||||
virtual ~GetBucketObjectVersionsResp() {}
|
||||
|
||||
/// \brief 编码格式
|
||||
std::string GetEncodingType() const { return m_encoding_type; }
|
||||
|
||||
/// \brief 返回的文件前缀
|
||||
std::string GetPrefix() const { return m_prefix; }
|
||||
|
||||
/// \brief 单次响应请求内返回结果的最大的条目数量
|
||||
uint64_t GetMaxKeys() const { return m_max_keys; }
|
||||
|
||||
/// \brief 响应请求条目是否被截断,布尔值:true,false
|
||||
bool IsTruncated() const { return m_is_truncated; }
|
||||
|
||||
/// \brief 假如返回条目被截断,则返回 NextKeyMarker 就是下一个条目的起点
|
||||
std::string GetNextKeyMarker() const { return m_next_key_marker; }
|
||||
|
||||
std::string GetKeyMarker() const { return m_key_marker; }
|
||||
|
||||
std::string GetBucketName() const { return m_bucket_name; }
|
||||
|
||||
std::string GetVersionIdMarker() const { return m_version_id_marker; }
|
||||
|
||||
std::vector<COSVersionSummary> GetVersionSummary() const { return m_summaries; }
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
private:
|
||||
std::vector<COSVersionSummary> m_summaries;
|
||||
std::string m_encoding_type;
|
||||
bool m_is_truncated;
|
||||
uint64_t m_max_keys;
|
||||
std::string m_bucket_name;
|
||||
std::string m_key_marker;
|
||||
std::string m_prefix;
|
||||
std::string m_version_id_marker;
|
||||
std::string m_next_key_marker;
|
||||
std::string m_next_version_id_marker;
|
||||
};
|
||||
|
||||
class PutBucketLoggingResp : public BaseResp {
|
||||
public:
|
||||
PutBucketLoggingResp() {}
|
||||
virtual ~PutBucketLoggingResp() {}
|
||||
};
|
||||
|
||||
class GetBucketLoggingResp : public BaseResp {
|
||||
public:
|
||||
GetBucketLoggingResp() {}
|
||||
virtual ~GetBucketLoggingResp() {}
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
LoggingEnabled GetLoggingEnabled() const {
|
||||
return m_rules;
|
||||
}
|
||||
|
||||
private:
|
||||
LoggingEnabled m_rules;
|
||||
};
|
||||
|
||||
class PutBucketDomainResp : public BaseResp {
|
||||
public:
|
||||
PutBucketDomainResp() {}
|
||||
virtual ~PutBucketDomainResp() {}
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
DomainErrorMsg GetDomainErrorMsg() const {
|
||||
return m_rules;
|
||||
}
|
||||
private:
|
||||
DomainErrorMsg m_rules;
|
||||
};
|
||||
|
||||
class GetBucketDomainResp : public BaseResp {
|
||||
public:
|
||||
GetBucketDomainResp() {}
|
||||
virtual ~GetBucketDomainResp() {}
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
|
||||
std::string GetStatus() const {
|
||||
return m_status;
|
||||
}
|
||||
|
||||
std::string GetName() const {
|
||||
return m_name;
|
||||
}
|
||||
|
||||
std::string GetType() const {
|
||||
return m_type;
|
||||
}
|
||||
|
||||
void SetStatus(const std::string& status) {
|
||||
m_status = status;
|
||||
}
|
||||
|
||||
void SetName(const std::string& name) {
|
||||
m_name = name;
|
||||
}
|
||||
|
||||
void SetType(const std::string& type) {
|
||||
m_type = type;
|
||||
}
|
||||
|
||||
private:
|
||||
std::string m_status;
|
||||
std::string m_name;
|
||||
std::string m_type;
|
||||
};
|
||||
|
||||
class PutBucketWebsiteResp : public BaseResp {
|
||||
public:
|
||||
PutBucketWebsiteResp() {}
|
||||
virtual ~PutBucketWebsiteResp() {}
|
||||
};
|
||||
|
||||
|
||||
class GetBucketWebsiteResp : public BaseResp {
|
||||
public:
|
||||
GetBucketWebsiteResp() {}
|
||||
virtual ~GetBucketWebsiteResp() {}
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
bool ParseFromXmlRoutingRule(rapidxml::xml_node<>* node, RoutingRule& tmp_routingrule);
|
||||
|
||||
void SetSuffix(const std::string& suffix) {
|
||||
m_suffix = suffix;
|
||||
}
|
||||
|
||||
void SetProtocol(const std::string& protocol) {
|
||||
m_protocol = protocol;
|
||||
}
|
||||
|
||||
void SetKey(const std::string& key) {
|
||||
m_key = key;
|
||||
}
|
||||
|
||||
std::string GetSuffix() const {
|
||||
return m_suffix;
|
||||
}
|
||||
|
||||
std::string GetProtocol() const {
|
||||
return m_protocol;
|
||||
}
|
||||
|
||||
std::string GetKey() const {
|
||||
return m_key;
|
||||
}
|
||||
|
||||
/// 设置重定向规则
|
||||
void SetRoutingRules(const std::vector<RoutingRule>& routingrules) {
|
||||
m_routingrules = routingrules;
|
||||
}
|
||||
|
||||
std::vector<RoutingRule> GetRoutingRules() const {
|
||||
return m_routingrules;
|
||||
}
|
||||
|
||||
/// 添加单个rule
|
||||
void AddRoutingRule(const RoutingRule& routingrule) {
|
||||
m_routingrules.push_back(routingrule);
|
||||
}
|
||||
|
||||
/// 清空重定向规则
|
||||
void ClearRoutingRule() {
|
||||
std::vector<RoutingRule> tmp;
|
||||
m_routingrules.swap(tmp);
|
||||
}
|
||||
|
||||
private:
|
||||
std::string m_suffix;
|
||||
std::string m_protocol;
|
||||
std::string m_key;
|
||||
std::vector<RoutingRule> m_routingrules;
|
||||
};
|
||||
|
||||
class DeleteBucketWebsiteResp : public BaseResp {
|
||||
public:
|
||||
DeleteBucketWebsiteResp() {}
|
||||
virtual ~DeleteBucketWebsiteResp() {}
|
||||
};
|
||||
|
||||
class PutBucketTaggingResp : public BaseResp {
|
||||
public:
|
||||
PutBucketTaggingResp() {}
|
||||
virtual ~PutBucketTaggingResp() {}
|
||||
};
|
||||
|
||||
class GetBucketTaggingResp : public BaseResp {
|
||||
public:
|
||||
GetBucketTaggingResp() {}
|
||||
|
||||
void SetTagSet(std::vector<Tag>& tagset) {
|
||||
m_tagset = tagset;
|
||||
}
|
||||
|
||||
std::vector<Tag> GetTagSet() const {
|
||||
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);
|
||||
}
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
virtual ~GetBucketTaggingResp() {}
|
||||
private:
|
||||
std::vector<Tag> m_tagset;
|
||||
};
|
||||
|
||||
class DeleteBucketTaggingResp : public BaseResp {
|
||||
public:
|
||||
DeleteBucketTaggingResp() {}
|
||||
virtual ~DeleteBucketTaggingResp() {}
|
||||
};
|
||||
|
||||
class PutBucketInventoryResp : public BaseResp {
|
||||
public:
|
||||
PutBucketInventoryResp() {}
|
||||
virtual ~PutBucketInventoryResp() {}
|
||||
};
|
||||
|
||||
class GetBucketInventoryResp : public BaseResp {
|
||||
public:
|
||||
GetBucketInventoryResp(): m_mask(0x00000001u) {}
|
||||
|
||||
void SetInventory(const 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;
|
||||
}
|
||||
|
||||
bool ParseFromXmlOptionalFields(rapidxml::xml_node<>*node, Inventory &temp_inventory);
|
||||
bool ParseFromXmlCOSBucketDestination(rapidxml::xml_node<>* node, Inventory &temp_inventory);
|
||||
bool ParseFromXmlInventoryConfiguration(rapidxml::xml_node<>* node, Inventory &temp_inventory);
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
virtual ~GetBucketInventoryResp() {}
|
||||
|
||||
private:
|
||||
uint64_t m_mask;
|
||||
Inventory m_inventory;
|
||||
};
|
||||
|
||||
|
||||
class ListBucketInventoryConfigurationsResp : public GetBucketInventoryResp {
|
||||
public:
|
||||
ListBucketInventoryConfigurationsResp(): m_is_truncated(false),
|
||||
m_continuation_token(""), m_next_continuation_token("") {}
|
||||
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
virtual ~ListBucketInventoryConfigurationsResp() {}
|
||||
|
||||
/// 添加单个Inventory.
|
||||
void AddInventory(const Inventory& inventory) {
|
||||
m_inventory_vec.push_back(inventory);
|
||||
}
|
||||
|
||||
void SetInventoryVec(std::vector<Inventory>& inventory_vec) {
|
||||
m_inventory_vec = inventory_vec;
|
||||
}
|
||||
|
||||
void SetIsTruncated(bool is_truncated) {
|
||||
m_is_truncated = is_truncated;
|
||||
}
|
||||
|
||||
void SetContinuationToken(std::string continuation_token) {
|
||||
m_continuation_token = continuation_token;
|
||||
}
|
||||
|
||||
void SetNextContinuationToken(std::string next_continuation_token) {
|
||||
m_next_continuation_token = next_continuation_token;
|
||||
}
|
||||
|
||||
std::vector<Inventory> GetInventory() const {
|
||||
return m_inventory_vec;
|
||||
}
|
||||
|
||||
bool GetIsTruncated() const {
|
||||
return m_is_truncated;
|
||||
}
|
||||
|
||||
std::string GetContinuationToken() const {
|
||||
return m_continuation_token;
|
||||
}
|
||||
|
||||
std::string GetNextContinuationToken() const {
|
||||
return m_next_continuation_token;
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector<Inventory> m_inventory_vec;
|
||||
bool m_is_truncated;
|
||||
std::string m_continuation_token;
|
||||
std::string m_next_continuation_token;
|
||||
};
|
||||
|
||||
class DeleteBucketInventoryResp : public BaseResp {
|
||||
public:
|
||||
DeleteBucketInventoryResp() {}
|
||||
virtual ~DeleteBucketInventoryResp() {}
|
||||
};
|
||||
|
||||
/// \brief: 列举直播通道响应
|
||||
class ListLiveChannelResp : public BaseResp {
|
||||
public:
|
||||
ListLiveChannelResp() {}
|
||||
virtual ~ListLiveChannelResp() {}
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
const ListLiveChannelResult &GetListResult() const {
|
||||
return result;
|
||||
}
|
||||
void ClearResult() {
|
||||
result.Clear();
|
||||
}
|
||||
private:
|
||||
ListLiveChannelResult result;
|
||||
};
|
||||
|
||||
/// \brief: 配置存储桶智能分层的响应
|
||||
class PutBucketIntelligentTieringResp : public BaseResp {
|
||||
public:
|
||||
PutBucketIntelligentTieringResp() {}
|
||||
virtual ~PutBucketIntelligentTieringResp() {}
|
||||
};
|
||||
|
||||
/// \brief: 获取配置存储桶智能分层配置的响应
|
||||
class GetBucketIntelligentTieringResp : public BaseResp {
|
||||
public:
|
||||
GetBucketIntelligentTieringResp() {}
|
||||
virtual ~GetBucketIntelligentTieringResp() {}
|
||||
virtual bool ParseFromXmlString(const std::string& body);
|
||||
std::string GetStatus() const {
|
||||
return m_status;
|
||||
}
|
||||
uint32_t GetDays() const {
|
||||
return m_days;
|
||||
}
|
||||
uint32_t GetRequestFrequent() const {
|
||||
return m_freq;
|
||||
}
|
||||
|
||||
private:
|
||||
std::string m_status;
|
||||
int m_days;
|
||||
int m_freq;
|
||||
};
|
||||
|
||||
} // namespace qcloud_cos
|
||||
#endif // BUCKET_RESP_H
|
||||
Reference in New Issue
Block a user