Files
cos-cpp-sdk-v5/include/cos_api.h
a158 3cf88acc07 BG
2026-04-05 20:22:11 +08:00

1042 lines
40 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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_