supported request headers operation

This commit is contained in:
Axios
2019-12-16 23:19:52 +08:00
committed by GitHub
parent 895d40a767
commit 175996b239
9 changed files with 71 additions and 31 deletions

1
.gitignore vendored
View File

@@ -13,3 +13,4 @@ test/httpserver/package-lock.json
test/httpserver/nohup.out
.idea
build/
cmake-build-debug/

View File

@@ -65,7 +65,6 @@ add_subdirectory(teslamaxcompute)
add_subdirectory(push)
add_subdirectory(csb)
add_subdirectory(domain)
add_subdirectory(green)
add_subdirectory(hsm)
add_subdirectory(dcdn)
add_subdirectory(pvtz)
@@ -98,30 +97,30 @@ add_subdirectory(cr)
add_subdirectory(openanalytics)
add_subdirectory(snsuapi)
add_subdirectory(ubsms)
add_subdirectory(yundun)
add_subdirectory(arms4finance)
add_subdirectory(imagesearch)
add_subdirectory(cas)
add_subdirectory(cloudwf)
add_subdirectory(alidns)
add_subdirectory(yundun)
add_subdirectory(arms4finance)
add_subdirectory(imagesearch)
add_subdirectory(cas)
add_subdirectory(cloudwf)
add_subdirectory(alidns)
add_subdirectory(httpdns)
add_subdirectory(crm)
add_subdirectory(kms)
add_subdirectory(sas-api)
add_subdirectory(jarvis-public)
add_subdirectory(mts)
add_subdirectory(dysmsapi)
add_subdirectory(ons)
add_subdirectory(ivision)
add_subdirectory(imm)
add_subdirectory(crm)
add_subdirectory(kms)
add_subdirectory(sas-api)
add_subdirectory(jarvis-public)
add_subdirectory(mts)
add_subdirectory(dysmsapi)
add_subdirectory(ons)
add_subdirectory(ivision)
add_subdirectory(imm)
add_subdirectory(bssopenapi)
add_subdirectory(sas)
add_subdirectory(dbs)
add_subdirectory(r-kvstore)
add_subdirectory(dds)
add_subdirectory(yundun-ds)
add_subdirectory(trademark)
add_subdirectory(dbs)
add_subdirectory(r-kvstore)
add_subdirectory(dds)
add_subdirectory(yundun-ds)
add_subdirectory(trademark)
add_subdirectory(sddp)

View File

@@ -46,6 +46,10 @@ public:
void setConnectTimeout(const long connectTimeout);
void setReadTimeout(const long readTimeout);
void setMethod(const HttpRequest::Method method);
void setHeader(const ParameterNameType &name, const ParameterValueType &value);
ParameterValueType getHeader(const ParameterNameType &name);
void removeHeader(const ParameterNameType &name);
ParameterCollection headers() const;
protected:
ServiceRequest(const std::string &product, const std::string &version);
@@ -77,6 +81,7 @@ private:
char *content_;
size_t contentSize_;
ParameterCollection params_;
ParameterCollection headers_;
std::string product_;
std::string resourcePath_;
std::string version_;

View File

@@ -102,6 +102,12 @@ HttpRequest RoaServiceClient::buildHttpRequest(const std::string & endpoint,
request.setReadTimeout(configuration().readTimeout());
}
for(const auto &h : msg.headers()){
if(!h.second.empty()){
request.setHeader(h.first, h.second);
}
}
if (msg.parameter("Accept").empty()) {
request.setHeader("Accept", "application/json");
} else {

View File

@@ -119,6 +119,14 @@ HttpRequest RpcServiceClient::buildHttpRequest(const std::string & endpoint,
request.setConnectTimeout(configuration().connectTimeout());
}
for (const auto &h : msg.headers())
{
if (!h.second.empty())
{
request.setHeader(h.first, h.second);
}
}
if (msg.readTimeout() != kInvalidTimeout) {
request.setReadTimeout(msg.readTimeout());
} else {

View File

@@ -235,4 +235,25 @@ void ServiceRequest::setMethod(const HttpRequest::Method method)
method_ = method;
}
void ServiceRequest::setHeader(const ServiceRequest::ParameterNameType &name,
const ServiceRequest::ParameterValueType &value)
{
headers_[name] = value;
}
ServiceRequest::ParameterValueType ServiceRequest::getHeader(const ServiceRequest::ParameterNameType &name)
{
return headers_[name];
}
void ServiceRequest::removeHeader(const ServiceRequest::ParameterNameType &name)
{
headers_.erase(name);
}
ServiceRequest::ParameterCollection ServiceRequest::headers() const
{
return headers_;
}
} // namespace AlibabaCloud

View File

@@ -116,10 +116,10 @@ TEST(EndpointProvider, serial_02) {
ClientConfiguration configuration("cn-hangzhou");
EndpointProvider ep(credentials, configuration, "cn-hangzhou", "arms", "arms");
EndpointProvider::EndpointOutcome out = ep.getEndpoint();
EXPECT_TRUE(out.result() == "arms.cn-hangzhou.aliyuncs.com");
EXPECT_EQ("arms.cn-hangzhou.aliyuncs.com", out.result());
EndpointProvider p1(credentials, configuration, "cn-shanghai", "fake-ecs", "fake-ecs");
EndpointProvider::EndpointOutcome out1 = p1.getEndpoint();
EXPECT_TRUE(out1.error().errorCode() == "InvalidProduct");
EXPECT_TRUE(out1.error().errorMessage() == "Prodcut[fake-ecs] does not exist.");
EXPECT_EQ("InvalidProduct", out1.error().errorCode());
EXPECT_EQ("Prodcut[fake-ecs] does not exist.", out1.error().errorMessage());
}

View File

@@ -54,7 +54,7 @@ static void f2() {
// there is no time for task executing
// maybe some tasks executed as the async reason
EXPECT_TRUE(nbr != 0x07);
// EXPECT_EQ(nbr, 0x07);
rf0 = new Runnable(func0);
rf1 = new Runnable(func1);
@@ -72,7 +72,7 @@ static void f2() {
e->execute(rf1);
e->execute(rf2);
usleep(20000);
EXPECT_TRUE(nbr == 0x07);
EXPECT_EQ(nbr, 0x07);
e->shutdown();
}
}

View File

@@ -165,8 +165,8 @@ void cb(const LocationClient *client,
const std::shared_ptr<const AsyncCallerContext> &contex)
{
EXPECT_TRUE(out.error().errorCode() == "");
EXPECT_TRUE(out.result().endpoints().size() == 1);
EXPECT_EQ(out.error().errorCode(), "");
EXPECT_EQ(out.result().endpoints().size(), 1);
Model::DescribeEndpointsResult::Endpoint ep = out.result().endpoints()[0];
EXPECT_TRUE(ep.endpoint == "ecs-cn-hangzhou.aliyuncs.com");
EXPECT_TRUE(ep.id == "cn-hangzhou");