Skip to content

Commit 255f97f

Browse files
committed
add demo
1 parent 46c61c2 commit 255f97f

File tree

4 files changed

+89
-0
lines changed

4 files changed

+89
-0
lines changed

demo/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ project(cos-demo)
33
if (NOT ${OS_TYPE} STREQUAL "WINDOWS")
44
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function")
55
endif()
6+
file(GLOB cos_demo_src "${CMAKE_SOURCE_DIR}/demo/cos_demo.cpp")
67
file(GLOB put_object_demo_src "${CMAKE_SOURCE_DIR}/demo/object_op_demo/put_object_demo.cpp")
78
file(GLOB get_object_url_demo_src "${CMAKE_SOURCE_DIR}/demo/object_op_demo/get_object_url_demo.cpp")
89
file(GLOB head_object_demo_src "${CMAKE_SOURCE_DIR}/demo/object_op_demo/head_object_demo.cpp")
@@ -14,9 +15,11 @@ file(GLOB restore_object_demo_src "${CMAKE_SOURCE_DIR}/demo/object_op_demo/resto
1415
file(GLOB copy_move_object_demo_src "${CMAKE_SOURCE_DIR}/demo/object_op_demo/copy_move_object_demo.cpp")
1516
file(GLOB multi_put_object_demo_src "${CMAKE_SOURCE_DIR}/demo/object_op_demo/multi_put_object_demo.cpp")
1617
file(GLOB multi_get_object_demo_src "${CMAKE_SOURCE_DIR}/demo/object_op_demo/multi_get_object_demo.cpp")
18+
file(GLOB select_objec_demo_src "${CMAKE_SOURCE_DIR}/demo/object_op_demo/select_objec_demo.cpp")
1719

1820
link_directories(${POCO_LINK_DIR} ${OPENSSL_LINK_DIR}) #这一行要放到add_executable前面
1921

22+
add_executable(cos_demo ${cos_demo_src})
2023
add_executable(put_object_demo ${put_object_demo_src})
2124
add_executable(get_object_url_demo ${get_object_url_demo_src})
2225
add_executable(head_object_demo ${head_object_demo_src})
@@ -28,9 +31,11 @@ add_executable(restore_object_demo ${restore_object_demo_src})
2831
add_executable(copy_move_object_demo ${copy_move_object_demo_src})
2932
add_executable(multi_put_object_demo ${multi_put_object_demo_src})
3033
add_executable(multi_get_object_demo ${multi_get_object_demo_src})
34+
add_executable(select_objec_demo ${select_objec_demo_src})
3135

3236
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
3337

38+
target_link_libraries(cos_demo cossdk ${POCO_LIBS} ${OPENSSL_LIBS} ${SYSTEM_LIBS})
3439
target_link_libraries(put_object_demo cossdk ${POCO_LIBS} ${OPENSSL_LIBS} ${SYSTEM_LIBS})
3540
target_link_libraries(get_object_url_demo cossdk ${POCO_LIBS} ${OPENSSL_LIBS} ${SYSTEM_LIBS})
3641
target_link_libraries(head_object_demo cossdk ${POCO_LIBS} ${OPENSSL_LIBS} ${SYSTEM_LIBS})
@@ -42,6 +47,7 @@ target_link_libraries(restore_object_demo cossdk ${POCO_LIBS} ${OPENSSL_LIBS} ${
4247
target_link_libraries(copy_move_object_demo cossdk ${POCO_LIBS} ${OPENSSL_LIBS} ${SYSTEM_LIBS})
4348
target_link_libraries(multi_put_object_demo cossdk ${POCO_LIBS} ${OPENSSL_LIBS} ${SYSTEM_LIBS})
4449
target_link_libraries(multi_get_object_demo cossdk ${POCO_LIBS} ${OPENSSL_LIBS} ${SYSTEM_LIBS})
50+
target_link_libraries(select_objec_demo cossdk ${POCO_LIBS} ${OPENSSL_LIBS} ${SYSTEM_LIBS})
4551

4652
include_directories(${CMAKE_SOURCE_DIR}/include/ ${POCO_INCLUDE_DIR})
4753

demo/object_op_demo/head_object_demo.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ void HeadObjectDemo(qcloud_cos::CosAPI& cos) {
6666
qcloud_cos::CosResult result = cos.HeadObject(req, &resp);
6767

6868
std::cout << "===================HeadObjectResponse=====================" << std::endl;
69+
std::map<std::string, std::string> cos_metas = resp.GetXCosMetas(); // 获取自定义的元数据map
70+
std::string cos_meta = resp.GetXCosMeta("x-cos-meta-*"); // 获取指定自定义的元数据
71+
std::string restore = resp.GetXCosRestore(); // 获得 archive 类型对象的当前恢复状态
72+
std::string sse = resp.GetXCosServerSideEncryption(); // Server端加密使用的算法
6973
PrintResult(result, resp);
7074
std::cout << "==========================================================" << std::endl;
7175
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#include <stdlib.h>
2+
#include <sys/stat.h>
3+
#include <iostream>
4+
#include <map>
5+
#include <string>
6+
#include <thread>
7+
#include <vector>
8+
#include "cos_api.h"
9+
#include "cos_sys_config.h"
10+
#include "util/auth_tool.h"
11+
12+
/**
13+
* 本样例演示了如何使用 COS C++ SDK 进行对象检索
14+
* 包括:对象检索
15+
*/
16+
using namespace qcloud_cos;
17+
18+
uint64_t appid = 12500000000;
19+
std::string tmp_secret_id = "AKIDXXXXXXXX";
20+
std::string tmp_secret_key = "1A2Z3YYYYYYYYYY";
21+
std::string region = "ap-guangzhou";
22+
std::string bucket_name = "examplebucket-12500000000";
23+
std::string tmp_token = "token";
24+
25+
/*
26+
* 本方法包含调用是否正常的判断,和请求结果的输出
27+
* 可通过本方法判断是否请求成功,并输出结果信息
28+
*/
29+
void PrintResult(const qcloud_cos::CosResult& result, const qcloud_cos::BaseResp& resp) {
30+
if (result.IsSucc()) {
31+
std::cout << "Request Succ." << std::endl;
32+
std::cout << resp.DebugString() << std::endl;
33+
} else {
34+
std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;
35+
std::cout << "HttpStatus=" << result.GetHttpStatus() << std::endl;
36+
std::cout << "ErrorCode=" << result.GetErrorCode() << std::endl;
37+
std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;
38+
std::cout << "ResourceAddr=" << result.GetResourceAddr() << std::endl;
39+
std::cout << "XCosRequestId=" << result.GetXCosRequestId() << std::endl;
40+
std::cout << "XCosTraceId=" << result.GetXCosTraceId() << std::endl;
41+
}
42+
}
43+
44+
/*
45+
* 通过参数形式初始化 CosAPI 对象
46+
*/
47+
qcloud_cos::CosAPI InitCosAPI() {
48+
qcloud_cos::CosConfig config(appid, tmp_secret_id, tmp_secret_key, region);
49+
config.SetTmpToken(tmp_token); // 推荐使用临时密钥初始化 CosAPI 对象, 如果您使用永久密钥初始化 CosAPI 对象,请注释
50+
qcloud_cos::CosAPI cos_tmp(config);
51+
return cos_tmp;
52+
}
53+
54+
void SelectObjectContentDemo(qcloud_cos::CosAPI& cos) {
55+
std::string object_name = "test.csv.gz";
56+
int input_file_type = CSV; // 待检索对象的格式为CSV或者JSON
57+
int input_compress_type = COMPRESS_GZIP; // 压缩类型,COMPRESS_NONE, COMPRESS_GZIP, COMPRESS_BZIP2
58+
int out_file_type = CSV; // 输出格式为CSV或者JSON
59+
60+
qcloud_cos::SelectObjectContentReq req(bucket_name, object_name, input_file_type, input_compress_type, out_file_type);
61+
req.SetSqlExpression("Select * from COSObject");
62+
qcloud_cos::SelectObjectContentResp resp;
63+
qcloud_cos::CosResult result = cos.SelectObjectContent(req, &resp);
64+
65+
std::cout << "=====================IsObjectExist=======================" << std::endl;
66+
PrintResult(result, resp);
67+
// 支持打印最终结果至终端或写入本地文件
68+
// resp.WriteResultToLocalFile("file_name");
69+
resp.PrintResult();
70+
std::cout << "=========================================================" << std::endl;
71+
}
72+
73+
int main() {
74+
qcloud_cos::CosAPI cos = InitCosAPI();
75+
CosSysConfig::SetLogLevel((LOG_LEVEL)COS_LOG_ERR);
76+
SelectObjectContentDemo(cos);
77+
}

src/util/file_util.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ std::string FileUtil::GetDirectory(const std::string& path) {
7575
uint64_t FileUtil::GetFileCrc64(const std::string& file) {
7676
std::fstream f(file, std::ios::in | std::ios::binary);
7777
const static int buffer_size = 2048;
78+
// NOCA:VariableLengthArrays(设计如此)
7879
char buffer[buffer_size];
7980
uint64_t crc64 = 0;
8081
while (f.good()) {
@@ -92,6 +93,7 @@ uint64_t FileUtil::GetFileCrc64(const std::string& file) {
9293
#if defined(_WIN32)
9394
uint64_t FileUtil::GetFileCrc64(const std::wstring& file) {
9495
std::fstream f(file, std::ios::in | std::ios::binary);
96+
// NOCA:VariableLengthArrays(设计如此)
9597
const static int buffer_size = 2048;
9698
char buffer[buffer_size];
9799
uint64_t crc64 = 0;

0 commit comments

Comments
 (0)