Jelajahi Sumber

supported request headers operation

Axios 6 tahun lalu
induk
melakukan
175996b239

+ 1 - 0
.gitignore

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

+ 23 - 24
CMakeLists.txt

@@ -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)

+ 5 - 0
core/include/alibabacloud/core/ServiceRequest.h

@@ -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_;

+ 6 - 0
core/src/RoaServiceClient.cc

@@ -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 {

+ 8 - 0
core/src/RpcServiceClient.cc

@@ -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 {

+ 21 - 0
core/src/ServiceRequest.cc

@@ -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

+ 3 - 3
test/core/endpointprovider_ut.cc

@@ -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());
 }

+ 2 - 2
test/core/executor_ut.cc

@@ -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();
   }
 }

+ 2 - 2
test/function_test/core/locationclient_ft.cc

@@ -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");