Mercurial > hg > orthanc-stone
diff Framework/Oracle/ThreadedOracle.cpp @ 979:18d53a8b41b7
HttpCommand
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 03 Sep 2019 17:52:28 +0200 |
parents | a7351ad54960 |
children | 81b29bc7c3d4 2d8ab34c8c91 |
line wrap: on
line diff
--- a/Framework/Oracle/ThreadedOracle.cpp Mon Sep 02 17:44:20 2019 +0200 +++ b/Framework/Oracle/ThreadedOracle.cpp Tue Sep 03 17:52:28 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()));