Browse Source

Add triggering

Andy Cedilnik 23 năm trước cách đây
mục cha
commit
96e0393dd6

+ 63 - 0
Source/CTest/cmCTestSubmit.cxx

@@ -84,6 +84,69 @@ bool cmCTestSubmit::SubmitUsingFTP(const std::string& localprefix,
   return true;
   return true;
 }
 }
 
 
+bool cmCTestSubmit::TriggerUsingHTTP(const std::vector<std::string>& files,
+                                     const std::string& remoteprefix, 
+                                     const std::string& url)
+{
+  CURL *curl;
+  CURLcode res = CURLcode();
+  FILE* ftpfile;
+
+  /* In windows, this will init the winsock stuff */
+  ::curl_global_init(CURL_GLOBAL_ALL);
+  
+  /* get a curl handle */
+  curl = curl_easy_init();
+  if(curl) 
+    {
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
+    std::string::size_type cc, kk;
+    for ( cc = 0; cc < files.size(); cc ++ )
+      {
+      std::string file = remoteprefix + files[cc];
+      std::string ofile = "";
+      for ( kk = 0; kk < file.size(); kk ++ )
+        {
+        char c = file[kk];
+        char hex[4] = { 0, 0, 0, 0 };
+        hex[0] = c;
+        switch ( c )
+          {
+          case '+':
+          case '?':
+          case '/':
+          case '\\':
+          case '&':
+          case ' ':
+          case '=':
+          case '%':
+            sprintf(hex, "%%%02X", (int)c);
+            ofile.append(hex);
+            break;
+          break;
+          default: 
+            ofile.append(hex);
+          }
+        }
+      std::string turl = url + "?xmlfile=" + ofile;
+      std::cout << "Trigger url: " << turl.c_str() << std::endl;
+      curl_easy_setopt(curl, CURLOPT_URL, turl.c_str());
+      res = curl_easy_perform(curl);
+      if ( res )
+        {
+        std::cout << "Error when uploading" << std::endl;
+        ::curl_easy_cleanup(curl);
+        ::curl_global_cleanup(); 
+        return false;
+        }
+      }
+    // always cleanup
+    ::curl_easy_cleanup(curl);
+    }
+  ::curl_global_cleanup(); 
+  return true;
+}
+
 bool cmCTestSubmit::SubmitUsingSCP(const std::string& localprefix, 
 bool cmCTestSubmit::SubmitUsingSCP(const std::string& localprefix, 
                                    const std::vector<std::string>& files,
                                    const std::vector<std::string>& files,
                                    const std::string& remoteprefix, 
                                    const std::string& remoteprefix, 

+ 4 - 0
Source/CTest/cmCTestSubmit.h

@@ -42,6 +42,10 @@ public:
                       const std::vector<std::string>& files,
                       const std::vector<std::string>& files,
                       const std::string& remoteprefix, 
                       const std::string& remoteprefix, 
                       const std::string& url);
                       const std::string& url);
+
+  bool TriggerUsingHTTP(const std::vector<std::string>& files,
+                        const std::string& remoteprefix, 
+                        const std::string& url);
 };
 };
 
 
 #endif
 #endif