Skip to content

Commit a558eab

Browse files
Merge pull request #136 from tencentyun/feature_huberyxxiao
Feature huberyxxiao
2 parents f44dbe6 + d59eed3 commit a558eab

29 files changed

+2088
-29
lines changed

demo/cos_demo.cpp

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ void DeleteBucket(qcloud_cos::CosAPI& cos, const std::string& bucket_name) {
8686

8787
void PutBucket(qcloud_cos::CosAPI& cos, const std::string& bucket_name) {
8888
qcloud_cos::PutBucketReq req(bucket_name);
89+
//创建MAZ存储桶使用下方进行设置
90+
//req.SetMAZBucket();
8991
qcloud_cos::PutBucketResp resp;
9092
qcloud_cos::CosResult result = cos.PutBucket(req, &resp);
9193

@@ -327,6 +329,74 @@ void GetBucketACL(qcloud_cos::CosAPI& cos, const std::string& bucket_name) {
327329
<< std::endl;
328330
}
329331

332+
void GetBucketPolicy(qcloud_cos::CosAPI& cos,const std::string& bucket_name) {
333+
qcloud_cos::GetBucketPolicyReq req(bucket_name);
334+
qcloud_cos::GetBucketPolicyResp resp;
335+
qcloud_cos::CosResult result = cos.GetBucketPolicy(req, &resp);
336+
337+
std::cout << resp.GetPolicy() << std::endl;
338+
std::cout << "===================GetBucketPolicy====================="
339+
<< std::endl;
340+
PrintResult(result, resp);
341+
std::cout
342+
<< "===================================================================="
343+
<< std::endl;
344+
}
345+
346+
void PutBucketPolicy(qcloud_cos::CosAPI& cos,const std::string& bucket_name) {
347+
qcloud_cos::PutBucketPolicyReq req(bucket_name);
348+
qcloud_cos::PutBucketPolicyResp resp;
349+
std::string bucket_policy =
350+
" {"
351+
" \"Statement\": ["
352+
" {"
353+
" \"Principal\": {"
354+
" \"qcs\": ["
355+
" \"qcs::cam::uin/100000000001:uin/100000000011\"" //替换成您想授予权限的账户 uin
356+
" ]\n"
357+
" },\n"
358+
" \"Effect\": \"allow\","
359+
" \"Action\": ["
360+
" \"cos:PutObject\""
361+
" ],\n"
362+
" \"Resource\": [" //这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径,例子: a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全风险, 请谨慎评估使用)
363+
" \"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/exampleobject\""
364+
" ],\n"
365+
" \"Condition\": {"
366+
" \"string_equal\": {"
367+
" \"cos:x-cos-mime-limit\": \"image/jpeg\""
368+
" }"
369+
" }"
370+
" }"
371+
" ],"
372+
" \"Version\": \"2.0\""
373+
" }";
374+
std::cout << bucket_policy << std::endl;
375+
req.SetBody(bucket_policy);
376+
qcloud_cos::CosResult result = cos.PutBucketPolicy(req, &resp);
377+
378+
std::cout << "===================PutBucketPolicy====================="
379+
<< std::endl;
380+
PrintResult(result, resp);
381+
std::cout
382+
<< "===================================================================="
383+
<< std::endl;
384+
}
385+
386+
void DeleteBucketPolicy(qcloud_cos::CosAPI& cos,const std::string& bucket_name) {
387+
qcloud_cos::DeleteBucketPolicyReq req(bucket_name);
388+
qcloud_cos::DeleteBucketPolicyResp resp;
389+
qcloud_cos::CosResult result = cos.DeleteBucketPolicy(req, &resp);
390+
391+
std::cout << "===================DeleteBucketPolicy====================="
392+
<< std::endl;
393+
PrintResult(result, resp);
394+
std::cout
395+
<< "===================================================================="
396+
<< std::endl;
397+
}
398+
399+
330400
void PutBucketCORS(qcloud_cos::CosAPI& cos, const std::string& bucket_name) {
331401
qcloud_cos::PutBucketCORSReq req(bucket_name);
332402
qcloud_cos::CORSRule rule;

demo/test_file/audio.mp3

180 KB
Binary file not shown.

demo/test_file/document.docx

11.9 KB
Binary file not shown.

demo/test_file/test.jpg

22.4 KB
Loading

demo/test_file/text.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
texttest

demo/test_file/video.mp4

5.26 MB
Binary file not shown.

gen_lcov.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/sh
22

33
workspace=`pwd`
4-
EXTRACT="${workspace}/*/op/* ${workspace}/*/util/* ${workspace}/*/request/* ${workspace}/*/response/* ${workspace}/*/trsf/* ${workspace}/include"
4+
EXTRACT="${workspace}/*/op/* ${workspace}/*/util/* ${workspace}/*/request/* ${workspace}/*/response/* ${workspace}/*/trsf/* ${workspace}/include/* ${workspace}/src/*"
55
# clear
66
rm UTReport -rf
77
rm UTResport.tar
@@ -39,8 +39,8 @@ lcov --extract sevenyou.info ${EXTRACT} -o sevenyou_filted.info
3939
genhtml -o UTReport --prefix=`pwd` sevenyou_init_filted.info sevenyou_filted.info
4040
tar -cvf UTReport.tar UTReport
4141

42-
rm sevenyou_init.info
43-
rm sevenyou_init_filted.info
44-
rm sevenyou.info
45-
rm sevenyou_filted.info
42+
# rm sevenyou_init.info
43+
# rm sevenyou_init_filted.info
44+
# rm sevenyou.info
45+
# rm sevenyou_filted.info
4646
rm UTReport -rf

include/cos_api.h

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class CosAPI {
5050
bool IsObjectExist(const std::string& bucket_name,
5151
const std::string& object_name);
5252

53-
/// \brief 创建一个Bucket
53+
/// \brief List Buckets
5454
/// 详见: https://cloud.tencent.com/document/api/436/8291
5555
///
5656
/// \param req GetService请求
@@ -189,6 +189,30 @@ class CosAPI {
189189
/// \return 本次请求的调用情况(如状态码等)
190190
CosResult PutBucketACL(const PutBucketACLReq& req, PutBucketACLResp* resp);
191191

192+
/// \brief 获取Bucket的权限策略
193+
///
194+
/// \param req GetBucketPolicy请求
195+
/// \param resp GetBucketPolicy返回
196+
///
197+
/// \return 本次请求的调用情况(如状态码等)
198+
CosResult GetBucketPolicy(const GetBucketPolicyReq& req, GetBucketPolicyResp* resp);
199+
200+
/// \brief 写入/替换Bucket的权限策略,通过Body传入
201+
///
202+
/// \param req PutBucketPolicy请求
203+
/// \param resp PutBucketPolicy返回
204+
///
205+
/// \return 本次请求的调用情况(如状态码等)
206+
CosResult PutBucketPolicy(const PutBucketPolicyReq& req, PutBucketPolicyResp* resp);
207+
208+
/// \brief 删除Bucket的权限策略
209+
///
210+
/// \param req DeleteBucketPolicy请求
211+
/// \param resp DeleteBucketPolicy返回
212+
///
213+
/// \return 本次请求的调用情况(如状态码等)
214+
CosResult DeleteBucketPolicy(const DeleteBucketPolicyReq& req, DeleteBucketPolicyResp* resp);
215+
192216
/// \brief 列出Bucket下的CORS
193217
///
194218
/// \param req GetBucketCORS请求
@@ -741,6 +765,12 @@ class CosAPI {
741765
SharedAsyncContext AsyncGetObject(const AsyncGetObjectReq& req);
742766
SharedAsyncContext AsyncGetObject(const AsyncGetObjectReq& req, Poco::TaskManager*& taskManager);
743767

768+
/// \brief 异步多线程下载对象到本地,支持断点续传
769+
/// \param req AsyncResumableGetObject
770+
/// \return 返回context
771+
SharedAsyncContext AsyncResumableGetObject(const AsyncGetObjectReq& req);
772+
SharedAsyncContext AsyncResumableGetObject(const AsyncGetObjectReq& req, Poco::TaskManager*& taskManager);;
773+
744774
/// \brief 异步多线程下载对象到本地
745775
/// \param req MultiGetObjectAsync请求
746776
/// \return 返回context
@@ -776,6 +806,10 @@ class CosAPI {
776806

777807
/* 数据处理接口 */
778808

809+
/*** 存储桶绑定万象服务 ***/
810+
CosResult PutBucketToCI(const PutBucketToCIReq& req,
811+
PutBucketToCIResp* resp);
812+
779813
/** 基础图片处理 **/
780814

781815
/** 图片持久化处理 **/
@@ -833,6 +867,10 @@ class CosAPI {
833867
CosResult DescribeMediaBuckets(const DescribeMediaBucketsReq& req,
834868
DescribeMediaBucketsResp* resp);
835869

870+
/*** 存储桶绑定媒体处理 ***/
871+
CosResult CreateMediaBucket(const CreateMediaBucketReq& req,
872+
CreateMediaBucketResp* resp);
873+
836874
/*** 获取媒体文件某个时间的截图 ***/
837875
// https://cloud.tencent.com/document/product/436/55671
838876
CosResult GetSnapshot(const GetSnapshotReq& req, GetSnapshotResp* resp);

include/cos_sys_config.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ class CosSysConfig {
118118
static std::string GetCIHost(const std::string& bucket_name,
119119
const std::string& region);
120120

121+
/// \brief 获取PIC域名
122+
static std::string GetPICHost(uint64_t app_id, const std::string& region,
123+
const std::string& bucket_name);
124+
121125
static std::string GetDestDomain();
122126

123127
/// \brief 获取是否使用特定ip和端口号

include/op/bucket_op.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,30 @@ class BucketOp : public BaseOp {
164164
/// \return 本次请求的调用情况(如状态码等)
165165
CosResult PutBucketACL(const PutBucketACLReq& req, PutBucketACLResp* resp);
166166

167+
/// \brief 获取Bucket的权限策略
168+
///
169+
/// \param req GetBucketPolicy请求
170+
/// \param resp GetBucketPolicy返回
171+
///
172+
/// \return 本次请求的调用情况(如状态码等)
173+
CosResult GetBucketPolicy(const GetBucketPolicyReq& req, GetBucketPolicyResp* resp);
174+
175+
/// \brief 写入/替换Bucket的权限策略,通过Body传入
176+
///
177+
/// \param req PutBucketPolicy请求
178+
/// \param resp PutBucketPolicy返回
179+
///
180+
/// \return 本次请求的调用情况(如状态码等)
181+
CosResult PutBucketPolicy(const PutBucketPolicyReq& req, PutBucketPolicyResp* resp);
182+
183+
/// \brief 删除Bucket的权限策略
184+
///
185+
/// \param req DeleteBucketPolicy请求
186+
/// \param resp DeleteBucketPolicy返回
187+
///
188+
/// \return 本次请求的调用情况(如状态码等)
189+
CosResult DeleteBucketPolicy(const DeleteBucketPolicyReq& req, DeleteBucketPolicyResp* resp);
190+
167191
/// \brief 列出Bucket下的CORS
168192
///
169193
/// \param req GetBucketCORS请求
@@ -379,6 +403,15 @@ class BucketOp : public BaseOp {
379403
const GetBucketIntelligentTieringReq& req,
380404
GetBucketIntelligentTieringResp* resp);
381405

406+
/// \brief 存储桶绑定ci
407+
///
408+
/// \param req PutBucketToCIReq请求
409+
/// \param resp PutBucketToCIResp返回
410+
///
411+
/// \return 本次请求的调用情况(如状态码等)
412+
CosResult PutBucketToCI(const PutBucketToCIReq& req,
413+
PutBucketToCIResp* resp);
414+
382415
/// \brief 提交文档转码任务
383416
/// \brief https://cloud.tencent.com/document/product/436/54056
384417
/// \param req CreateDocProcessJobs请求
@@ -432,6 +465,14 @@ class BucketOp : public BaseOp {
432465
CosResult DescribeMediaBuckets(const DescribeMediaBucketsReq& req,
433466
DescribeMediaBucketsResp* resp);
434467

468+
/// \brief 开通媒体处理
469+
/// \brief https://cloud.tencent.com/document/product/436/72824
470+
/// \param req DescribeMediaBuckets请求
471+
/// \param resp DescribeMediaBuckets返回
472+
///
473+
/// \return 本次请求的调用情况(如状态码等)
474+
CosResult CreateMediaBucket(const CreateMediaBucketReq& req,
475+
CreateMediaBucketResp* resp);
435476
/// \brief 获取媒体文件信息
436477
/// \brief https://cloud.tencent.com/document/product/436/55672
437478
/// \param req GetMediainfo请求

0 commit comments

Comments
 (0)