Skip to content

Commit f89212f

Browse files
authored
Merge pull request #57 from volcengine/release_2.6.16
2.6.16 support set request header
2 parents a67ee68 + f09773b commit f89212f

File tree

12 files changed

+68
-8
lines changed

12 files changed

+68
-8
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
## Release Note
2+
3+
### 2025.6.23 Version 2.6.16
4+
- 支持 请求指定请求头域
5+
26
### 2025.4.19 Version 2.6.15
37
- 支持 请求时携带客户端证书
48
- 修复 默认流控实现中返回时间单位错误问题

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.1)
22

33
project(ve-tos-cpp-sdk
4-
VERSION 2.6.15
4+
VERSION 2.6.16
55
LANGUAGES CXX)
66

77
# project settings

example/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.1)
22
project(ve-tos-cpp-sdk-example
3-
VERSION 2.6.15
3+
VERSION 2.6.16
44
LANGUAGES CXX)
55

66
add_executable(${PROJECT_NAME} example.cc)

sdk/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.1)
22
project(ve-tos-cpp-sdk-lib
3-
VERSION 2.6.15
3+
VERSION 2.6.16
44
LANGUAGES CXX)
55
set(SDK_HEADER
66
include/auth/Credential.h

sdk/include/RequestBuilder.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,13 @@ class RequestBuilder {
115115
requestDate_ = requestDate;
116116
}
117117

118+
const std::map<std::string, std::string>& getRequestHeader() const {
119+
return requestHeader_;
120+
}
121+
void setRequestHeader(const std::map<std::string, std::string>& requestHeader) {
122+
requestHeader_ = requestHeader;
123+
}
124+
118125
std::shared_ptr<TosRequest> Build(const std::string& method);
119126
std::shared_ptr<TosRequest> BuildControlRequest(const std::string& method);
120127
std::shared_ptr<TosRequest> Build(const std::string& method, std::shared_ptr<std::iostream> content);
@@ -142,5 +149,6 @@ class RequestBuilder {
142149
bool isCustomDomain_ = false;
143150

144151
std::time_t requestDate_ = 0;
152+
std::map<std::string, std::string> requestHeader_ = {};
145153
};
146154
} // namespace VolcengineTos

sdk/include/TosClient.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
#include "model/object/ModifyObjectInput.h"
5858
#include "model/object/ModifyObjectOutput.h"
5959
namespace VolcengineTos {
60-
static const char* TOS_SDK_VERSION = "v2.6.15";
60+
static const char* TOS_SDK_VERSION = "v2.6.16";
6161
#ifdef WIN32
6262
static const char* PLATFORM_NAME = "windows";
6363
#elif __linux__

sdk/include/model/GenericInput.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#pragma once
22
#include <ctime>
3+
#include <map>
34
namespace VolcengineTos {
45

56
class GenericInput {
@@ -16,7 +17,16 @@ class GenericInput {
1617
std::time_t getRequestDate() const {
1718
return requestDate_;
1819
}
20+
21+
const std::map<std::string, std::string>& getRequestHeader() const {
22+
return requestHeader_;
23+
}
24+
void setRequestHeader(const std::map<std::string, std::string>& requestHeader) {
25+
requestHeader_ = requestHeader;
26+
}
27+
1928
private:
2029
std::time_t requestDate_ = 0;
30+
std::map<std::string, std::string> requestHeader_ = {};
2131
};
22-
} // namespace VolcengineTos
32+
} // namespace VolcengineTos

sdk/src/RequestBuilder.cc

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,37 @@
33
#include "auth/SignV4.h"
44
using namespace VolcengineTos;
55

6+
// 合并 GenericInput RequestHeader 和请求中的 header
7+
void mergeRequestHeaderAndHeader(const std::map<std::string, std::string> &reqHeader, std::map<std::string, std::string> &header) {
8+
if (reqHeader.empty())
9+
return;
10+
11+
std::map<std::string, std::string> lower_header;
12+
for (const auto& pair : header) {
13+
lower_header[StringUtils::toLower(pair.first)] = pair.second;
14+
}
15+
16+
auto iter = reqHeader.begin();
17+
for (; iter != reqHeader.end(); iter++) {
18+
if (iter->first.empty()) {
19+
continue;
20+
}
21+
22+
std::string key(iter->first);
23+
std::string kk = StringUtils::toLower(key);
24+
25+
if (kk == "content-length" || kk == "host" || kk == "x-tos-date" ||
26+
kk == "range" || kk == "transfer-encoding" || kk == "authorization" ||
27+
kk == "date") {
28+
continue;
29+
}
30+
31+
if (lower_header.find(kk) == lower_header.end()) {
32+
header.insert({iter->first, iter->second}); // 如果不存在,插入键值对
33+
}
34+
}
35+
}
36+
637
std::shared_ptr<TosRequest> RequestBuilder::build(const std::string& method) {
738
std::string host, path;
839
if (isCustomDomain_){
@@ -20,13 +51,15 @@ std::shared_ptr<TosRequest> RequestBuilder::build(const std::string& method) {
2051
}
2152
}
2253

54+
mergeRequestHeaderAndHeader(requestHeader_, headers_);
2355
auto req = std::make_shared<TosRequest>(scheme_, method, host, path, headers_, query_);
2456
req->setRequestDate(requestDate_);
2557
return req;
2658
}
2759

2860
std::shared_ptr<TosRequest> RequestBuilder::buildControlRequest(const std::string& method) {
2961
std::string host = accountID_ + "." + controlHost_;
62+
mergeRequestHeaderAndHeader(requestHeader_, headers_);
3063
auto req = std::make_shared<TosRequest>(scheme_, method, host, "/qospolicy", headers_, query_);
3164
req->setRequestDate(requestDate_);
3265
return req;
@@ -46,6 +79,7 @@ std::shared_ptr<TosRequest> RequestBuilder::buildSignedURL(const std::string& me
4679
path += object_;
4780
}
4881

82+
mergeRequestHeaderAndHeader(requestHeader_, headers_);
4983
auto req = std::make_shared<TosRequest>(scheme_, method, host, path, headers_, query_);
5084
req->setRequestDate(requestDate_);
5185
return req;

sdk/src/TosClientImpl.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7863,6 +7863,7 @@ RequestBuilder TosClientImpl::newBuilder(const std::string& accountID, const Gen
78637863
config_.isCustomDomain());
78647864
rb.withHeader(http::HEADER_USER_AGENT, userAgent_);
78657865
rb.setRequestDate(genericInput.getRequestDate());
7866+
rb.setRequestHeader(genericInput.getRequestHeader());
78667867
return rb;
78677868
}
78687869

@@ -7873,6 +7874,7 @@ RequestBuilder TosClientImpl::newBuilder(const std::string& bucket, const std::s
78737874
urlMode_, headers, queries,config_.isCustomDomain());
78747875
rb.withHeader(http::HEADER_USER_AGENT, userAgent_);
78757876
rb.setRequestDate(genericInput.getRequestDate());
7877+
rb.setRequestHeader(genericInput.getRequestHeader());
78767878
return rb;
78777879
}
78787880

@@ -7889,6 +7891,7 @@ RequestBuilder TosClientImpl::newBuilder(const std::string& bucket, const std::s
78897891
queries, config_.isCustomDomain());
78907892
rb.withHeader(http::HEADER_USER_AGENT, userAgent_);
78917893
rb.setRequestDate(genericInput.getRequestDate());
7894+
rb.setRequestHeader(genericInput.getRequestHeader());
78927895
return rb;
78937896
}
78947897
RequestBuilder TosClientImpl::newBuilder(const std::string& bucket, const std::string& object,
@@ -7910,6 +7913,7 @@ RequestBuilder TosClientImpl::newBuilder(const std::string& bucket, const std::s
79107913
rb.setAutoRecognizeContentType(builder.isAutoRecognizeContentType());
79117914
rb.setRange(builder.getRange());
79127915
rb.setRequestDate(genericInput.getRequestDate());
7916+
rb.setRequestHeader(genericInput.getRequestHeader());
79137917
return rb;
79147918
}
79157919

test/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.1)
22
project(ve-tos-cpp-sdk-test
3-
VERSION 2.6.15
3+
VERSION 2.6.16
44
LANGUAGES CXX)
55

66
include(FetchContent)

0 commit comments

Comments
 (0)