1042 lines
40 KiB
C++
1042 lines
40 KiB
C++
#ifndef COS_CPP_SDK_V5_INCLUDE_COS_API_H_
|
||
#define COS_CPP_SDK_V5_INCLUDE_COS_API_H_
|
||
|
||
#include "op/bucket_op.h"
|
||
#include "op/cos_result.h"
|
||
#include "op/object_op.h"
|
||
#include "op/service_op.h"
|
||
#include "util/auth_tool.h"
|
||
#include "util/codec_util.h"
|
||
#include "Poco/TaskManager.h"
|
||
|
||
namespace qcloud_cos {
|
||
|
||
class CosAPI {
|
||
public:
|
||
/// \brief CosAPI构造函数
|
||
///
|
||
/// \param config cos配置
|
||
explicit CosAPI(CosConfig& config);
|
||
|
||
~CosAPI();
|
||
|
||
/// \brief 设置密钥
|
||
void SetCredentail(const std::string& ak, const std::string& sk,
|
||
const std::string& token);
|
||
|
||
/// \brief 获取 Bucket 所在的地域信息
|
||
std::string GetBucketLocation(const std::string& bucket_name);
|
||
|
||
/// \brief 生成一个预签名链接
|
||
std::string GeneratePresignedUrl(const GeneratePresignedUrlReq& req);
|
||
|
||
/// \brief 生成一个预签名链接
|
||
std::string GeneratePresignedUrl(const std::string& bucket_name,
|
||
const std::string& object_name,
|
||
uint64_t start_time_in_s,
|
||
uint64_t end_time_in_s,
|
||
HTTP_METHOD http_method);
|
||
|
||
/// \brief 生成一个预签名的GET下载链接
|
||
std::string GeneratePresignedUrl(const std::string& bucket_name,
|
||
const std::string& object_name,
|
||
uint64_t start_time_in_s,
|
||
uint64_t end_time_in_s);
|
||
|
||
/// \brief 判断Bucket是否存在
|
||
bool IsBucketExist(const std::string& bucket_name);
|
||
|
||
/// \brief 判断Object是否存在
|
||
bool IsObjectExist(const std::string& bucket_name,
|
||
const std::string& object_name);
|
||
|
||
/// \brief List Buckets
|
||
/// 详见: https://cloud.tencent.com/document/api/436/8291
|
||
///
|
||
/// \param req GetService请求
|
||
/// \param resp GetService响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetService(const GetServiceReq& req, GetServiceResp* resp);
|
||
|
||
/// \brief 创建一个Bucket
|
||
/// 详见: https://www.qcloud.com/document/product/436/7738
|
||
///
|
||
/// \param req PutBucket请求
|
||
/// \param resp PutBucket响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucket(const PutBucketReq& req, PutBucketResp* resp);
|
||
|
||
/// \brief 确认Bucket是否存在
|
||
/// (详见:https://cloud.tencent.com/document/product/436/7735)
|
||
///
|
||
/// \param req HeadBucket请求
|
||
/// \param resp HeadBucket响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult HeadBucket(const HeadBucketReq& req, HeadBucketResp* resp);
|
||
|
||
/// \brief 列出该Bucket下的部分或者全部Object, 需要对Bucket有Read 权限
|
||
/// 详见: https://www.qcloud.com/document/product/436/7734
|
||
///
|
||
/// \param req GetBucket请求
|
||
/// \param resp GetBucket响应
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult GetBucket(const GetBucketReq& req, GetBucketResp* resp);
|
||
|
||
CosResult ListMultipartUpload(const ListMultipartUploadReq& req,
|
||
ListMultipartUploadResp* resp);
|
||
|
||
/// \brief 删除Bucket
|
||
/// 详见: https://cloud.tencent.com/document/product/436/7732
|
||
///
|
||
/// \param req DeleteBucket请求
|
||
/// \param resp DeleteBucket响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteBucket(const DeleteBucketReq& req, DeleteBucketResp* resp);
|
||
|
||
/// \brief 获得存储桶的版本控制信息
|
||
/// (详见:https://cloud.tencent.com/document/product/436/8597)
|
||
///
|
||
/// \param req GetBucketVersioning请求
|
||
/// \param resp GetBucketVersioning返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketVersioning(const GetBucketVersioningReq& req,
|
||
GetBucketVersioningResp* resp);
|
||
|
||
/// \brief 启用或者暂停存储桶的版本控制功能
|
||
/// (详见:https://cloud.tencent.com/document/product/436/8591)
|
||
///
|
||
/// \param req PutBucketVersioning请求
|
||
/// \param resp PutBucketVersioning返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketVersioning(const PutBucketVersioningReq& req,
|
||
PutBucketVersioningResp* resp);
|
||
|
||
/// \brief 列出Bucket下的跨域复制配置
|
||
///
|
||
/// \param req GetBucketReplication请求
|
||
/// \param resp GetBucketReplication返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketReplication(const GetBucketReplicationReq& req,
|
||
GetBucketReplicationResp* resp);
|
||
|
||
/// \brief 增加/替换Bucket下的跨域复制配置
|
||
///
|
||
/// \param req PutBucketReplication请求
|
||
/// \param resp PutBucketReplication返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketReplication(const PutBucketReplicationReq& req,
|
||
PutBucketReplicationResp* resp);
|
||
|
||
/// \brief 删除Bucket下的跨域复制配置
|
||
///
|
||
/// \param req DeleteBucketReplication请求
|
||
/// \param resp DeleteBucketReplication返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteBucketReplication(const DeleteBucketReplicationReq& req,
|
||
DeleteBucketReplicationResp* resp);
|
||
|
||
/// \brief 列出Bucket下的生命周期配置
|
||
///
|
||
/// \param req GetBucketLifecycle请求
|
||
/// \param resp GetBucketLifecycle返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketLifecycle(const GetBucketLifecycleReq& req,
|
||
GetBucketLifecycleResp* resp);
|
||
|
||
/// \brief 增加/替换Bucket下的生命周期配置
|
||
///
|
||
/// \param req PutBucketLifecycle请求
|
||
/// \param resp PutBucketLifecycle返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketLifecycle(const PutBucketLifecycleReq& req,
|
||
PutBucketLifecycleResp* resp);
|
||
|
||
/// \brief 删除Bucket下的生命周期配置
|
||
///
|
||
/// \param req DeleteBucketLifecycle请求
|
||
/// \param resp DeleteBucketLifecycle返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteBucketLifecycle(const DeleteBucketLifecycleReq& req,
|
||
DeleteBucketLifecycleResp* resp);
|
||
|
||
/// \brief 列出Bucket下的ACL
|
||
///
|
||
/// \param req GetBucketACL请求
|
||
/// \param resp GetBucketACL返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketACL(const GetBucketACLReq& req, GetBucketACLResp* resp);
|
||
|
||
/// \brief 增加/替换Bucket下的ACL, 可以通过Header或者Body传入ACL信息
|
||
/// 注意Header 和 Body 只能选择其中一种,否则响应返回会冲突
|
||
///
|
||
/// \param req PutBucketACL请求
|
||
/// \param resp PutBucketACL返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketACL(const PutBucketACLReq& req, PutBucketACLResp* resp);
|
||
|
||
/// \brief 获取Bucket的权限策略
|
||
///
|
||
/// \param req GetBucketPolicy请求
|
||
/// \param resp GetBucketPolicy返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketPolicy(const GetBucketPolicyReq& req, GetBucketPolicyResp* resp);
|
||
|
||
/// \brief 写入/替换Bucket的权限策略,通过Body传入
|
||
///
|
||
/// \param req PutBucketPolicy请求
|
||
/// \param resp PutBucketPolicy返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketPolicy(const PutBucketPolicyReq& req, PutBucketPolicyResp* resp);
|
||
|
||
/// \brief 删除Bucket的权限策略
|
||
///
|
||
/// \param req DeleteBucketPolicy请求
|
||
/// \param resp DeleteBucketPolicy返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteBucketPolicy(const DeleteBucketPolicyReq& req, DeleteBucketPolicyResp* resp);
|
||
|
||
/// \brief 列出Bucket下的CORS
|
||
///
|
||
/// \param req GetBucketCORS请求
|
||
/// \param resp GetBucketCORS返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketCORS(const GetBucketCORSReq& req, GetBucketCORSResp* resp);
|
||
|
||
/// \brief 增加/替换Bucket下的CORS
|
||
///
|
||
/// \param req PutBucketCORS请求
|
||
/// \param resp PutBucketCORS返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketCORS(const PutBucketCORSReq& req, PutBucketCORSResp* resp);
|
||
|
||
/// \brief 删除Bucket下的CORS
|
||
///
|
||
/// \param req DeleteBucketCORS请求
|
||
/// \param resp DeleteBucketCORS返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteBucketCORS(const DeleteBucketCORSReq& req,
|
||
DeleteBucketCORSResp* resp);
|
||
|
||
/// \brief 为存储桶设置 Referer 白名单或者黑名单
|
||
///
|
||
/// \param req PutBucketReferer请求
|
||
/// \param resp PutBucketReferer响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketReferer(const PutBucketRefererReq& req,
|
||
PutBucketRefererResp* resp);
|
||
|
||
/// \brief 为存储桶设置 Referer 白名单或者黑名单
|
||
///
|
||
/// \param req GetBucketReferer请求
|
||
/// \param resp GetBucketReferer响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketReferer(const GetBucketRefererReq& req,
|
||
GetBucketRefererResp* resp);
|
||
/// \brief 设置源存储桶的日志配置信息。
|
||
///
|
||
/// \param req PutBucketLogging请求
|
||
/// \param resp PutBucketLogging返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
|
||
CosResult PutBucketLogging(const PutBucketLoggingReq& req,
|
||
PutBucketLoggingResp* resp);
|
||
|
||
/// \brief 获取源存储桶的日志配置信息。
|
||
///
|
||
/// \param req GetBucketLogging请求
|
||
/// \param resp GetBucketLogging返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketLogging(const GetBucketLoggingReq& req,
|
||
GetBucketLoggingResp* resp);
|
||
|
||
/// \brief 设置存储桶自定义域名。
|
||
///
|
||
/// \param req PutBucketDomain请求
|
||
/// \param resp PutBucketDomain返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketDomain(const PutBucketDomainReq& req,
|
||
PutBucketDomainResp* resp);
|
||
|
||
/// \brief 获取存储桶自定义域名。
|
||
///
|
||
/// \param req GetBucketDomain请求
|
||
/// \param resp GetBucketDomain返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketDomain(const GetBucketDomainReq& req,
|
||
GetBucketDomainResp* resp);
|
||
|
||
/// \brief 为存储桶配置静态网站,可以通过传入 XML
|
||
/// 格式的配置文件进行配置,文件大小限制为64KB.
|
||
///
|
||
/// \param req PutBucketWebsite请求
|
||
/// \param resp PutBucketWebsite返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketWebsite(const PutBucketWebsiteReq& req,
|
||
PutBucketWebsiteResp* resp);
|
||
|
||
/// \brief 请求用于获取与存储桶关联的静态网站配置信息.
|
||
///
|
||
/// \param req GetBucketWebsite请求
|
||
/// \param resp GetBucketWebsite返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketWebsite(const GetBucketWebsiteReq& req,
|
||
GetBucketWebsiteResp* resp);
|
||
|
||
/// \brief 删除存储桶中的静态网站配置.
|
||
///
|
||
/// \param req DeleteBucketWebsite请求
|
||
/// \param resp DeleteBucketWebsite返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteBucketWebsite(const DeleteBucketWebsiteReq& req,
|
||
DeleteBucketWebsiteResp* resp);
|
||
|
||
/// \brief 已存在的Bucket设置标签.
|
||
///
|
||
/// \param req PutBucketTagging请求
|
||
/// \param resp PutBucketTagging返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketTagging(const PutBucketTaggingReq& req,
|
||
PutBucketTaggingResp* resp);
|
||
|
||
/// \brief 查询指定存储桶下已有的存储桶标签.
|
||
///
|
||
/// \param req GetBucketTagging请求
|
||
/// \param resp GetBucketTagging返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketTagging(const GetBucketTaggingReq& req,
|
||
GetBucketTaggingResp* resp);
|
||
|
||
/// \brief 删除指定存储桶下已有的存储桶标签.
|
||
///
|
||
/// \param req DeleteBucketTagging请求
|
||
/// \param resp DeleteBucketTagging返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteBucketTagging(const DeleteBucketTaggingReq& req,
|
||
DeleteBucketTaggingResp* resp);
|
||
|
||
/// \brief 在存储桶中创建清单任务.
|
||
///
|
||
/// \param req PutBucketInventory请求
|
||
/// \param resp PutBucketInventory返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutBucketInventory(const PutBucketInventoryReq& req,
|
||
PutBucketInventoryResp* resp);
|
||
|
||
/// \brief 用于查询存储桶中用户的清单任务信息.
|
||
///
|
||
/// \param req GetBucketInventory请求
|
||
/// \param resp GetBucketInventory返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketInventory(const GetBucketInventoryReq& req,
|
||
GetBucketInventoryResp* resp);
|
||
|
||
/// \brief 用于请求返回一个存储桶中的所有清单任务.
|
||
///
|
||
/// \param req ListBucketInventoryConfigurations请求
|
||
/// \param resp ListBucketInventoryConfigurations返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult ListBucketInventoryConfigurations(
|
||
const ListBucketInventoryConfigurationsReq& req,
|
||
ListBucketInventoryConfigurationsResp* resp);
|
||
|
||
/// \brief 用于删除存储桶中指定的清单任务.
|
||
///
|
||
/// \param req DeleteBucketinventory请求
|
||
/// \param resp DeleteBucketinventory返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteBucketInventory(const DeleteBucketInventoryReq& req,
|
||
DeleteBucketInventoryResp* resp);
|
||
|
||
/// \brief 获取对应Object的meta信息数据
|
||
/// 详见: https://www.qcloud.com/document/product/436/7745
|
||
///
|
||
/// \param req HeadObject请求
|
||
/// \param resp HeadObject响应
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult HeadObject(const HeadObjectReq& req, HeadObjectResp* resp);
|
||
|
||
/// \brief 下载Bucket中的一个文件至流中
|
||
/// 详见: https://www.qcloud.com/document/product/436/7753
|
||
///
|
||
/// \param req GetObjectByStream请求
|
||
/// \param resp GetObjectByStream返回
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult GetObject(const GetObjectByStreamReq& req,
|
||
GetObjectByStreamResp* resp);
|
||
|
||
/// \brief 下载Bucket中的一个文件到本地
|
||
/// 详见: https://www.qcloud.com/document/product/436/7753
|
||
///
|
||
/// \param req GetObjectByFile请求
|
||
/// \param resp GetObjectByFile返回
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult GetObject(const GetObjectByFileReq& req, GetObjectByFileResp* resp);
|
||
|
||
/// \brief 返回对象的URL
|
||
///
|
||
/// \param bucket 存储桶名
|
||
/// \param object 对象名
|
||
/// \param https 是否使用https
|
||
/// \param region 地域名,默认使用配置文件中的地域名
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
std::string GetObjectUrl(const std::string& bucket, const std::string& object,
|
||
bool https = true, const std::string& region = "");
|
||
|
||
/// \brief 将本地的文件上传至指定Bucket中
|
||
/// 详见: https://www.qcloud.com/document/product/436/7749
|
||
///
|
||
/// \param req PutObject请求
|
||
/// \param resp PutObject响应
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult PutObject(const PutObjectByFileReq& req, PutObjectByFileResp* resp);
|
||
|
||
/// \brief 将指定流上传至指定Bucket中
|
||
/// 详见: https://www.qcloud.com/document/product/436/7749
|
||
///
|
||
/// \param req PutObject请求
|
||
/// \param resp PutObject响应
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult PutObject(const PutObjectByStreamReq& req,
|
||
PutObjectByStreamResp* resp);
|
||
|
||
/// \brief 删除Object
|
||
/// 详见: https://cloud.tencent.com/document/product/436/7743
|
||
///
|
||
/// \param req DeleteObject请求
|
||
/// \param resp DeleteObject响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteObject(const DeleteObjectReq& req, DeleteObjectResp* resp);
|
||
|
||
/// \brief 批量删除Object
|
||
///
|
||
/// \param req DeleteObjects请求
|
||
/// \param resp DeleteObjects返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteObjects(const DeleteObjectsReq& req, DeleteObjectsResp* resp);
|
||
|
||
/// \brief
|
||
/// 请求实现初始化分片上传,成功执行此请求以后会返回UploadId用于后续的Upload
|
||
/// Part请求
|
||
/// 详见: https://www.qcloud.com/document/product/436/7746
|
||
///
|
||
/// \param req InitMultiUpload请求
|
||
/// \param resp InitMultiUpload返回
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult InitMultiUpload(const InitMultiUploadReq& req,
|
||
InitMultiUploadResp* resp);
|
||
|
||
/// \brief
|
||
/// 初始化以后的分片上传,支持的分片的数量为1到10000,片的大小为1MB到5GB
|
||
/// 详见: https://www.qcloud.com/document/product/436/7750
|
||
///
|
||
/// \param req UploadPartData请求
|
||
/// \param resp UploadPartData返回
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult UploadPartData(const UploadPartDataReq& req,
|
||
UploadPartDataResp* resp);
|
||
|
||
/// \brief
|
||
/// 初始化以后的分片上传复制,支持的片的数量为1到10000,片的大小为1MB到5GB
|
||
/// 详见: https://cloud.tencent.com/document/product/436/8287
|
||
///
|
||
/// \param req UploadPartCopyData请求
|
||
/// \param resp UploadPartCopyData返回
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult UploadPartCopyData(const UploadPartCopyDataReq& req,
|
||
UploadPartCopyDataResp* resp);
|
||
|
||
/// \brief 完成整个分块上传。当使用 Upload Parts 上传完所有块以后,
|
||
/// 必须调用该 API 来完成整个文件的分块上传
|
||
/// 详见: https://www.qcloud.com/document/product/436/7742
|
||
///
|
||
/// \param req CompleteMultiUpload请求
|
||
/// \param resp CompleteMultiUpload返回
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult CompleteMultiUpload(const CompleteMultiUploadReq& req,
|
||
CompleteMultiUploadResp* resp);
|
||
|
||
/// \brief 舍弃一个分块上传并删除已上传的块
|
||
/// 详见: https://www.qcloud.com/document/product/436/7740
|
||
///
|
||
/// \param req AbortMultiUpload请求
|
||
/// \param resp AbortMultiUpload返回
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult AbortMultiUpload(const AbortMultiUploadReq& req,
|
||
AbortMultiUploadResp* resp);
|
||
|
||
/// \brief 查询特定分块上传中的已上传的块
|
||
///
|
||
/// \param req ListParts请求
|
||
/// \param resp ListParts返回
|
||
///
|
||
/// \return
|
||
CosResult ListParts(const ListPartsReq& req, ListPartsResp* resp);
|
||
|
||
/// \brief 列出Object下的ACL
|
||
///
|
||
/// \param req GetObjectACL请求
|
||
/// \param resp GetObjectACL返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetObjectACL(const GetObjectACLReq& req, GetObjectACLResp* resp);
|
||
|
||
/// \brief 增加/替换Object下的ACL, 可以通过Header或者Body传入ACL信息
|
||
/// 注意Header 和 Body 只能选择其中一种,否则响应返回会冲突
|
||
///
|
||
/// \param req PutObjectACL请求
|
||
/// \param resp PutObjectACL返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutObjectACL(const PutObjectACLReq& req, PutObjectACLResp* resp);
|
||
|
||
/// \brief 已存在的Object设置标签.
|
||
///
|
||
/// \param req PutObjectTagging请求
|
||
/// \param resp PutObjectTagging返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutObjectTagging(const PutObjectTaggingReq& req,
|
||
PutObjectTaggingResp* resp);
|
||
|
||
/// \brief 查询指定对象下已有的对象标签.
|
||
///
|
||
/// \param req GetObjectTagging请求
|
||
/// \param resp GetObjectTagging返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetObjectTagging(const GetObjectTaggingReq& req,
|
||
GetObjectTaggingResp* resp);
|
||
|
||
/// \brief 删除指定对象下已有的对象标签.
|
||
///
|
||
/// \param req DeleteObjectTagging请求
|
||
/// \param resp DeleteObjectTagging返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteObjectTagging(const DeleteObjectTaggingReq& req,
|
||
DeleteObjectTaggingResp* resp);
|
||
|
||
/// \brief 复制Object, 适用于跨园区且Object小于5G
|
||
///
|
||
/// \param req PutObjectCopy请求
|
||
/// \param resp PutObjectCopy返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutObjectCopy(const PutObjectCopyReq& req, PutObjectCopyResp* resp);
|
||
|
||
/// \brief 复制Object,
|
||
/// 自动判断源Object大小,调用PutObjectCopy/UploadPartCopyData
|
||
///
|
||
/// \param req Copy请求
|
||
/// \param resp Copy返回
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult Copy(const CopyReq& req, CopyResp* resp);
|
||
|
||
/// \brief 对一个通过 COS 归档为 archive 类型的对象进行恢复
|
||
///
|
||
/// \param req PostObjectRestore请求
|
||
/// \param resp PostObjectRestore返回
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult PostObjectRestore(const PostObjectRestoreReq& req,
|
||
PostObjectRestoreResp* resp);
|
||
|
||
/// \brief
|
||
/// 实现Object跨域访问请求的预请求,参考https://cloud.tencent.com/document/product/436/8288
|
||
///
|
||
/// \param req OptionsObjectReq 请求
|
||
/// \param resp OptionsObjectResp 响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult OptionsObject(const OptionsObjectReq& req, OptionsObjectResp* resp);
|
||
|
||
/// \brief 支持SELECT
|
||
/// 接口,参考https://cloud.tencent.com/document/product/436/37641
|
||
CosResult SelectObjectContent(const SelectObjectContentReq& req,
|
||
SelectObjectContentResp* resp);
|
||
|
||
/// \brief 追加对象, 参考https://cloud.tencent.com/document/product/436/7743
|
||
///
|
||
/// \param req AppendObject请求
|
||
/// \param resp AppendObject响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult AppendObject(const AppendObjectReq& req, AppendObjectResp* resp);
|
||
|
||
/// \brief 列出Bucket下的部分或者全部Object(包括多版本)
|
||
///
|
||
/// \param req GetBucketObjectVersions请求
|
||
/// \param resp GetBucketObjectVersions响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetBucketObjectVersions(const GetBucketObjectVersionsReq& req,
|
||
GetBucketObjectVersionsResp* resp);
|
||
|
||
/// \brief 创建推流通道
|
||
///
|
||
/// \param req PutLiveChannelReq请求
|
||
/// \param resp PutLiveChannelResp响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutLiveChannel(const PutLiveChannelReq& req,
|
||
PutLiveChannelResp* resp);
|
||
|
||
/// \brief 生成推流通道带签名的推流url
|
||
///
|
||
/// \param bucket 存储桶名称
|
||
/// \param channel 通道名
|
||
/// \param expire 签名过期时间
|
||
/// \param url_params url参数
|
||
///
|
||
/// \return 带签名的推流url
|
||
std::string
|
||
GetRtmpSignedPublishUrl(const std::string& bucket, const std::string& channel,
|
||
int expire,
|
||
const std::map<std::string, std::string> url_params);
|
||
|
||
/// \brief 启用或者禁用直播通道
|
||
///
|
||
/// \param req PutLiveChannelSwitch请求
|
||
/// \param resp PutLiveChannelSwitch响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PutLiveChannelSwitch(const PutLiveChannelSwitchReq& req,
|
||
PutLiveChannelSwitchResp* resp);
|
||
|
||
/// \brief 获取直播通道配置信息
|
||
///
|
||
/// \param req GetLiveChannel请求
|
||
/// \param resp GetLiveChannel响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetLiveChannel(const GetLiveChannelReq& req,
|
||
GetLiveChannelResp* resp);
|
||
|
||
/// \brief 获取直播通道推流历史
|
||
///
|
||
/// \param req GetLiveChannelHistory请求
|
||
/// \param resp GetLiveChannelHistory响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetLiveChannelHistory(const GetLiveChannelHistoryReq& req,
|
||
GetLiveChannelHistoryResp* resp);
|
||
|
||
/// \brief 获取直播通道推流状态
|
||
///
|
||
/// \param req GetLiveChannelStatus请求
|
||
/// \param resp GetLiveChannelStatus响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetLiveChannelStatus(const GetLiveChannelStatusReq& req,
|
||
GetLiveChannelStatusResp* resp);
|
||
|
||
/// \brief 删除直播通道
|
||
///
|
||
/// \param req GetLiveChannelStatus请求
|
||
/// \param resp GetLiveChannelStatus响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteLiveChannel(const DeleteLiveChannelReq& req,
|
||
DeleteLiveChannelResp* resp);
|
||
|
||
/// \brief 查询指定通道在指定时间段推流生成的播放列表
|
||
///
|
||
/// \param req GetLiveChannelVodPlaylist请求
|
||
/// \param resp GetLiveChannelVodPlaylist响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult GetLiveChannelVodPlaylist(const GetLiveChannelVodPlaylistReq& req,
|
||
GetLiveChannelVodPlaylistResp* resp);
|
||
|
||
/// \brief 为指定通道生成一个可供点播例用的播放列
|
||
///
|
||
/// \param req PostLiveChannelVodPlaylist请求
|
||
/// \param resp PostLiveChannelVodPlaylist响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult PostLiveChannelVodPlaylist(const PostLiveChannelVodPlaylistReq& req,
|
||
PostLiveChannelVodPlaylistResp* resp);
|
||
|
||
/// \brief 列举通道
|
||
///
|
||
/// \param req PostLiveChannelVodPlaylist请求
|
||
/// \param resp PostLiveChannelVodPlaylist响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult ListLiveChannel(const ListLiveChannelReq& req,
|
||
ListLiveChannelResp* resp);
|
||
|
||
/// \brief 配置存储桶智能分层
|
||
///
|
||
/// \param req PutBucketIntelligentTiering请求
|
||
/// \param resp PutBucketIntelligentTiering响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult
|
||
PutBucketIntelligentTiering(const PutBucketIntelligentTieringReq& req,
|
||
PutBucketIntelligentTieringResp* resp);
|
||
|
||
/// \brief 获取存储桶智能分层配置
|
||
///
|
||
/// \param req GetBucketIntelligentTiering请求
|
||
/// \param resp GetBucketIntelligentTiering响应
|
||
///
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult
|
||
GetBucketIntelligentTiering(const GetBucketIntelligentTieringReq& req,
|
||
GetBucketIntelligentTieringResp* resp);
|
||
|
||
/* Multithread接口 */
|
||
|
||
/// \brief 封装了初始化分块上传、分块上传、完成分块上传三步,支持断点续传
|
||
///
|
||
/// \param req MultiPutObject请求
|
||
/// \param resp MultiPutObject响应
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult MultiPutObject(const MultiPutObjectReq& req,
|
||
MultiPutObjectResp* resp);
|
||
|
||
/// \brief 多线程Range下载对象到本地
|
||
/// 详见: https://www.qcloud.com/document/product/436/7753
|
||
///
|
||
/// \param req MultiGetObject请求
|
||
/// \param resp MultiGetObject响应
|
||
///
|
||
/// \return 返回HTTP请求的状态码及错误信息
|
||
CosResult MultiGetObject(const MultiGetObjectReq& req,
|
||
MultiGetObjectResp* resp);
|
||
|
||
CosResult PutObjectResumableSingleThreadSync(const PutObjectResumableSingleSyncReq& req,
|
||
PutObjectResumableSingleSyncResp* resp);
|
||
|
||
/* Resumable接口 */
|
||
|
||
/// \brief 封装了初始化分块上传、分块上传、完成分块上传三步,支持断点续传
|
||
// CosResult ResumablePutObject(const PutObjectByFile& req,
|
||
// MultiPutObjectResp* resp);
|
||
|
||
/// \brief 支持断点下载
|
||
CosResult ResumableGetObject(const GetObjectByFileReq& req,
|
||
GetObjectByFileResp* resp);
|
||
|
||
/* Async接口 */
|
||
|
||
/// \brief 异步简单上传本地文件,不支持断点续传
|
||
/// \param req PutObjectAsync请求
|
||
/// \return 返回context
|
||
SharedAsyncContext AsyncPutObject(const AsyncPutObjectReq& req);
|
||
SharedAsyncContext AsyncPutObject(const AsyncPutObjectReq& req, Poco::TaskManager*& taskManager);
|
||
|
||
SharedAsyncContext AsyncPutObject(const AsyncPutObjectByStreamReq& req);
|
||
SharedAsyncContext AsyncPutObject(const AsyncPutObjectByStreamReq& req, Poco::TaskManager*& taskManager);
|
||
|
||
/// \brief
|
||
/// 异步上传对象,封装了初始化分块上传、分块上传、完成分块上传三步,支持断点续传
|
||
/// \param req MultiPutObjectAsync请求
|
||
/// \return 返回context
|
||
SharedAsyncContext AsyncMultiPutObject(const AsyncMultiPutObjectReq& req);
|
||
SharedAsyncContext AsyncMultiPutObject(const AsyncMultiPutObjectReq& req, Poco::TaskManager*& taskManager);
|
||
|
||
/// \brief 异步单线程下载对象到本地
|
||
/// \param req GetObjectAsync请求
|
||
/// \return 返回context
|
||
SharedAsyncContext AsyncGetObject(const AsyncGetObjectReq& req);
|
||
SharedAsyncContext AsyncGetObject(const AsyncGetObjectReq& req, Poco::TaskManager*& taskManager);
|
||
|
||
/// \brief 异步多线程下载对象到本地,支持断点续传
|
||
/// \param req AsyncResumableGetObject
|
||
/// \return 返回context
|
||
SharedAsyncContext AsyncResumableGetObject(const AsyncGetObjectReq& req);
|
||
SharedAsyncContext AsyncResumableGetObject(const AsyncGetObjectReq& req, Poco::TaskManager*& taskManager);
|
||
|
||
/// \brief 异步多线程下载对象到本地
|
||
/// \param req MultiGetObjectAsync请求
|
||
/// \return 返回context
|
||
SharedAsyncContext AsyncMultiGetObject(const AsyncMultiGetObjectReq& req);
|
||
SharedAsyncContext AsyncMultiGetObject(const AsyncMultiGetObjectReq& req, Poco::TaskManager*& taskManager);
|
||
|
||
/* 批量及目录操作接口 */
|
||
|
||
/// \brief 批量上传对象
|
||
/// \param req PutObjects请求
|
||
/// \param resp PutObjects响应
|
||
/// \return 批量上传结果
|
||
CosResult PutObjects(const PutObjectsByDirectoryReq& req,
|
||
PutObjectsByDirectoryResp* resp);
|
||
|
||
/// \brief 创建目录
|
||
/// \param req PutDirectory请求
|
||
/// \param resp PutDirectory响应
|
||
/// \return 创建目录结果
|
||
CosResult PutDirectory(const PutDirectoryReq& req, PutDirectoryResp* resp);
|
||
|
||
/// \brief 移动对象
|
||
/// \param req MoveObject请求
|
||
/// \return 移动对象结果
|
||
CosResult MoveObject(const MoveObjectReq& req);
|
||
|
||
/// \brief 按前缀删除Object
|
||
/// \param req DeleteObjectsByPrefix请求
|
||
/// \param resp DeleteObjectsByPrefix响应
|
||
/// \return 本次请求的调用情况(如状态码等)
|
||
CosResult DeleteObjects(const DeleteObjectsByPrefixReq& req,
|
||
DeleteObjectsByPrefixResp* resp);
|
||
|
||
/* 数据处理接口 */
|
||
|
||
/*** 存储桶绑定万象服务 ***/
|
||
CosResult PutBucketToCI(const PutBucketToCIReq& req,
|
||
PutBucketToCIResp* resp);
|
||
|
||
/** 基础图片处理 **/
|
||
|
||
/** 图片持久化处理 **/
|
||
|
||
/*** 上传时处理 ***/
|
||
CosResult PutImage(PutImageByFileReq& req, PutImageByFileResp* resp);
|
||
|
||
/*** 云上数据处理 ***/
|
||
CosResult CloudImageProcess(const CloudImageProcessReq& req,
|
||
CloudImageProcessResp* resp);
|
||
|
||
/*** 下载图片时识别二维码 ***/
|
||
CosResult GetQRcode(const GetQRcodeReq& req, GetQRcodeResp* resp);
|
||
|
||
/** 文档处理接口 **/
|
||
|
||
/*** 查询已经开通文档预览功能的 Bucket ***/
|
||
// https://cloud.tencent.com/document/product/436/54057
|
||
CosResult DescribeDocProcessBuckets(const DescribeDocProcessBucketsReq& req,
|
||
DescribeDocProcessBucketsResp* resp);
|
||
|
||
/*** 预览文档 ***/
|
||
// https://cloud.tencent.com/document/product/436/54058
|
||
CosResult DocPreview(const DocPreviewReq& req, DocPreviewResp* resp);
|
||
|
||
/*** 存储桶绑定文档预览 ***/
|
||
CosResult CreateDocBucket(const CreateDocBucketReq& req,
|
||
CreateDocBucketResp* resp);
|
||
|
||
/*** 提交一个文档预览任务 ***/
|
||
// https://cloud.tencent.com/document/product/436/54056
|
||
CosResult CreateDocProcessJobs(const CreateDocProcessJobsReq& req,
|
||
CreateDocProcessJobsResp* resp);
|
||
|
||
/*** 查询指定的文档预览任务 ***/
|
||
// https://cloud.tencent.com/document/product/436/54095
|
||
CosResult DescribeDocProcessJob(const DescribeDocProcessJobReq& req,
|
||
DescribeDocProcessJobResp* resp);
|
||
|
||
/*** 拉取符合条件的文档预览任务 ***/
|
||
// https://cloud.tencent.com/document/product/436/54096
|
||
CosResult DescribeDocProcessJobs(const DescribeDocProcessJobsReq& req,
|
||
DescribeDocProcessJobsResp* resp);
|
||
|
||
/*** 查询文档预览队列 ***/
|
||
// https://cloud.tencent.com/document/product/436/54055
|
||
CosResult DescribeDocProcessQueues(const DescribeDocProcessQueuesReq& req,
|
||
DescribeDocProcessQueuesResp* resp);
|
||
|
||
/*** 更新文档预览队列 ***/
|
||
// https://cloud.tencent.com/document/product/436/54094
|
||
CosResult UpdateDocProcessQueue(const UpdateDocProcessQueueReq& req,
|
||
UpdateDocProcessQueueResp* resp);
|
||
|
||
/** 媒体处理接口 **/
|
||
|
||
/*** 查询已经开通媒体处理功能的存储桶 ***/
|
||
// https://cloud.tencent.com/document/product/436/48988
|
||
CosResult DescribeMediaBuckets(const DescribeMediaBucketsReq& req,
|
||
DescribeMediaBucketsResp* resp);
|
||
|
||
/*** 存储桶绑定媒体处理 ***/
|
||
CosResult CreateMediaBucket(const CreateMediaBucketReq& req,
|
||
CreateMediaBucketResp* resp);
|
||
|
||
/*** 获取媒体文件某个时间的截图 ***/
|
||
// https://cloud.tencent.com/document/product/436/55671
|
||
CosResult GetSnapshot(const GetSnapshotReq& req, GetSnapshotResp* resp);
|
||
|
||
/*** 获取媒体文件的信息 ***/
|
||
// https://cloud.tencent.com/document/product/436/55672
|
||
CosResult GetMediaInfo(const GetMediaInfoReq& req, GetMediaInfoResp* resp);
|
||
|
||
/*** 获取私有 M3U8 ts 资源的下载授权 ***/
|
||
// https://cloud.tencent.com/document/product/436/63740
|
||
CosResult GetPm3u8(const GetPm3u8Req& req, GetPm3u8Resp* resp);
|
||
|
||
/*** 查询媒体处理队列 ***/
|
||
// https://cloud.tencent.com/document/product/436/54045
|
||
CosResult DescribeMediaQueues(const DescribeMediaQueuesReq& req,
|
||
DescribeQueuesResp* resp);
|
||
|
||
/*** 更新媒体处理队列 ***/
|
||
// https://cloud.tencent.com/document/product/436/54046
|
||
CosResult UpdateMediaQueue(const UpdateMediaQueueReq& req,
|
||
UpdateQueueResp* resp);
|
||
|
||
/** 文档处理接口 **/
|
||
|
||
/*** 查询已经开通文档处理功能的存储桶 ***/
|
||
// https://cloud.tencent.com/document/product/460/95747
|
||
CosResult DescribeFileBuckets(const DescribeFileBucketsReq& req,
|
||
DescribeFileBucketsResp* resp);
|
||
|
||
/*** 存储桶绑定文档处理 ***/
|
||
// https://cloud.tencent.com/document/product/460/86377
|
||
CosResult CreateFileBucket(const CreateFileBucketReq& req,
|
||
CreateFileBucketResp* resp);
|
||
|
||
/* 异步任务接口 */
|
||
/** 创建异步任务 **/
|
||
CosResult CreateDataProcessJobs(const CreateDataProcessJobsReq& req,
|
||
CreateDataProcessJobsResp* resp);
|
||
|
||
/** 查询异步任务 **/
|
||
CosResult DescribeDataProcessJob(const DescribeDataProcessJobReq& req,
|
||
DescribeDataProcessJobResp* resp);
|
||
|
||
/** 取消异步任务 **/
|
||
CosResult CancelDataProcessJob(const CancelDataProcessJobReq& req,
|
||
CancelDataProcessJobResp* resp);
|
||
|
||
/* 内容审核接口 */
|
||
|
||
/** 图片审核 **/
|
||
|
||
/*** 图片同步审核 ***/
|
||
// https://cloud.tencent.com/document/product/436/45434
|
||
CosResult GetImageAuditing(const GetImageAuditingReq& req,
|
||
GetImageAuditingResp* resp);
|
||
|
||
/*** 图片批量审核 ***/
|
||
// https://cloud.tencent.com/document/product/436/63593
|
||
CosResult BatchImageAuditing(const BatchImageAuditingReq& req,
|
||
BatchImageAuditingResp* resp);
|
||
|
||
/*** 查询图片审核任务结果 ***/
|
||
// https://cloud.tencent.com/document/product/436/68904
|
||
CosResult DescribeImageAuditingJob(const DescribeImageAuditingJobReq& req,
|
||
DescribeImageAuditingJobResp* resp);
|
||
|
||
/*** 提交视频审核任务 ***/
|
||
// https://cloud.tencent.com/document/product/436/47316
|
||
CosResult CreateVideoAuditingJob(const CreateVideoAuditingJobReq& req,
|
||
CreateVideoAuditingJobResp* resp);
|
||
|
||
/*** 查询视频审核任务结果 ***/
|
||
// https://cloud.tencent.com/document/product/436/47317
|
||
CosResult DescribeVideoAuditingJob(const DescribeVideoAuditingJobReq& req,
|
||
DescribeVideoAuditingJobResp* resp);
|
||
|
||
/*** 提交音频审核任务 ***/
|
||
// https://cloud.tencent.com/document/product/436/54063
|
||
CosResult CreateAudioAuditingJob(const CreateAudioAuditingJobReq& req,
|
||
CreateAudioAuditingJobResp* resp);
|
||
|
||
/*** 查询音频审核任务结果 ***/
|
||
// https://cloud.tencent.com/document/product/436/54064
|
||
CosResult DescribeAudioAuditingJob(const DescribeAudioAuditingJobReq& req,
|
||
DescribeAudioAuditingJobResp* resp);
|
||
|
||
/*** 提交文本审核任务 ***/
|
||
// https://cloud.tencent.com/document/product/436/56289
|
||
CosResult CreateTextAuditingJob(const CreateTextAuditingJobReq& req,
|
||
CreateTextAuditingJobResp* resp);
|
||
|
||
/*** 查询文本审核任务结果 ***/
|
||
// https://cloud.tencent.com/document/product/436/56288
|
||
CosResult DescribeTextAuditingJob(const DescribeTextAuditingJobReq& req,
|
||
DescribeTextAuditingJobResp* resp);
|
||
|
||
/*** 提交文档审核任务 ***/
|
||
// https://cloud.tencent.com/document/product/436/59381
|
||
CosResult CreateDocumentAuditingJob(const CreateDocumentAuditingJobReq& req,
|
||
CreateDocumentAuditingJobResp* resp);
|
||
|
||
/*** 查询文档审核任务结果 ***/
|
||
// https://cloud.tencent.com/document/product/436/59382
|
||
CosResult DescribeDocumentAuditingJob(const DescribeDocumentAuditingJobReq& req,
|
||
DescribeDocumentAuditingJobResp* resp);
|
||
|
||
/*** 提交网页审核任务 ***/
|
||
// https://cloud.tencent.com/document/product/436/63958
|
||
CosResult CreateWebPageAuditingJob(const CreateWebPageAuditingJobReq& req,
|
||
CreateWebPageAuditingJobResp* resp);
|
||
|
||
/*** 查询网页审核任务结果 ***/
|
||
// https://cloud.tencent.com/document/product/436/63959
|
||
CosResult DescribeWebPageAuditingJob(const DescribeWebPageAuditingJobReq& req,
|
||
DescribeWebPageAuditingJobResp* resp);
|
||
|
||
private:
|
||
int CosInit();
|
||
void CosUInit();
|
||
|
||
private:
|
||
// Be careful with the m_config order
|
||
SharedConfig m_config;
|
||
ObjectOp m_object_op; // 内部封装object相关的操作
|
||
BucketOp m_bucket_op; // 内部封装bucket相关的操作
|
||
ServiceOp m_service_op; // 内部封装service相关的操作
|
||
|
||
static bool s_init;
|
||
static bool s_poco_init;
|
||
static int s_cos_obj_num;
|
||
};
|
||
|
||
} // namespace qcloud_cos
|
||
#endif // COS_CPP_SDK_V5_INCLUDE_COS_API_H_
|