diff Plugins/Engine/OrthancPlugins.cpp @ 1780:94990da8710e

OrthancPluginRestApiGet2
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 13 Nov 2015 15:06:45 +0100
parents 8790488ae98b
children 30e97a1f4093
line wrap: on
line diff
--- a/Plugins/Engine/OrthancPlugins.cpp	Fri Nov 13 13:20:28 2015 +0100
+++ b/Plugins/Engine/OrthancPlugins.cpp	Fri Nov 13 15:06:45 2015 +0100
@@ -819,6 +819,36 @@
   }
 
 
+  void OrthancPlugins::RestApiGet2(const void* parameters)
+  {
+    const _OrthancPluginRestApiGet2& p = 
+      *reinterpret_cast<const _OrthancPluginRestApiGet2*>(parameters);
+        
+    LOG(INFO) << "Plugin making REST GET call on URI " << p.uri
+              << (p.afterPlugins ? " (after plugins)" : " (built-in API)");
+
+    IHttpHandler::Arguments headers;
+
+    for (uint32_t i = 0; i < p.headersCount; i++)
+    {
+      headers[p.headersKeys[i]] = p.headersValues[i];
+    }
+
+    CheckContextAvailable();
+    IHttpHandler& handler = pimpl_->context_->GetHttpHandler().RestrictToOrthancRestApi(!p.afterPlugins);
+
+    std::string result;
+    if (HttpToolbox::SimpleGet(result, handler, RequestOrigin_Plugins, p.uri, headers))
+    {
+      CopyToMemoryBuffer(*p.target, result);
+    }
+    else
+    {
+      throw OrthancException(ErrorCode_BadRequest);
+    }
+  }
+
+
   void OrthancPlugins::RestApiPostPut(bool isPost, 
                                       const void* parameters,
                                       bool afterPlugins)
@@ -1395,6 +1425,10 @@
         RestApiGet(parameters, true);
         return true;
 
+      case _OrthancPluginService_RestApiGet2:
+        RestApiGet2(parameters);
+        return true;
+
       case _OrthancPluginService_RestApiPost:
         RestApiPostPut(true, parameters, false);
         return true;