diff Framework/Oracle/ThreadedOracle.cpp @ 982:3f6e5a38c88f toa2019090601

Merge
author Benjamin Golinvaux <bgo@osimis.io>
date Fri, 06 Sep 2019 09:39:18 +0200
parents 18d53a8b41b7
children 81b29bc7c3d4 2d8ab34c8c91
line wrap: on
line diff
--- a/Framework/Oracle/ThreadedOracle.cpp	Fri Sep 06 09:38:18 2019 +0200
+++ b/Framework/Oracle/ThreadedOracle.cpp	Fri Sep 06 09:39:18 2019 +0200
@@ -23,6 +23,7 @@
 
 #include "GetOrthancImageCommand.h"
 #include "GetOrthancWebViewerJpegCommand.h"
+#include "HttpCommand.h"
 #include "OrthancRestApiCommand.h"
 #include "SleepOracleCommand.h"
 #include "OracleCommandExceptionMessage.h"
@@ -212,6 +213,34 @@
 
 
   static void Execute(IMessageEmitter& emitter,
+                      const IObserver& receiver,
+                      const HttpCommand& command)
+  {
+    Orthanc::HttpClient client;
+    client.SetUrl(command.GetUrl());
+    client.SetMethod(command.GetMethod());
+    client.SetTimeout(command.GetTimeout());
+
+    CopyHttpHeaders(client, command.GetHttpHeaders());
+
+    if (command.GetMethod() == Orthanc::HttpMethod_Post ||
+        command.GetMethod() == Orthanc::HttpMethod_Put)
+    {
+      client.SetBody(command.GetBody());
+    }
+
+    std::string answer;
+    Orthanc::HttpClient::HttpHeaders answerHeaders;
+    client.ApplyAndThrowException(answer, answerHeaders);
+
+    DecodeAnswer(answer, answerHeaders);
+
+    HttpCommand::SuccessMessage message(command, answerHeaders, answer);
+    emitter.EmitMessage(receiver, message);
+  }
+
+
+  static void Execute(IMessageEmitter& emitter,
                       const Orthanc::WebServiceParameters& orthanc,
                       const IObserver& receiver,
                       const OrthancRestApiCommand& command)
@@ -307,6 +336,11 @@
             break;
           }
 
+          case IOracleCommand::Type_Http:
+            Execute(emitter_, item.GetReceiver(), 
+                    dynamic_cast<const HttpCommand&>(item.GetCommand()));
+            break;
+
           case IOracleCommand::Type_OrthancRestApi:
             Execute(emitter_, orthanc_, item.GetReceiver(), 
                     dynamic_cast<const OrthancRestApiCommand&>(item.GetCommand()));