comparison 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
comparison
equal deleted inserted replaced
978:0e21ecafcc23 979:18d53a8b41b7
21 21
22 #include "ThreadedOracle.h" 22 #include "ThreadedOracle.h"
23 23
24 #include "GetOrthancImageCommand.h" 24 #include "GetOrthancImageCommand.h"
25 #include "GetOrthancWebViewerJpegCommand.h" 25 #include "GetOrthancWebViewerJpegCommand.h"
26 #include "HttpCommand.h"
26 #include "OrthancRestApiCommand.h" 27 #include "OrthancRestApiCommand.h"
27 #include "SleepOracleCommand.h" 28 #include "SleepOracleCommand.h"
28 #include "OracleCommandExceptionMessage.h" 29 #include "OracleCommandExceptionMessage.h"
29 30
30 #include <Core/Compression/GzipCompressor.h> 31 #include <Core/Compression/GzipCompressor.h>
210 } 211 }
211 } 212 }
212 213
213 214
214 static void Execute(IMessageEmitter& emitter, 215 static void Execute(IMessageEmitter& emitter,
216 const IObserver& receiver,
217 const HttpCommand& command)
218 {
219 Orthanc::HttpClient client;
220 client.SetUrl(command.GetUrl());
221 client.SetMethod(command.GetMethod());
222 client.SetTimeout(command.GetTimeout());
223
224 CopyHttpHeaders(client, command.GetHttpHeaders());
225
226 if (command.GetMethod() == Orthanc::HttpMethod_Post ||
227 command.GetMethod() == Orthanc::HttpMethod_Put)
228 {
229 client.SetBody(command.GetBody());
230 }
231
232 std::string answer;
233 Orthanc::HttpClient::HttpHeaders answerHeaders;
234 client.ApplyAndThrowException(answer, answerHeaders);
235
236 DecodeAnswer(answer, answerHeaders);
237
238 HttpCommand::SuccessMessage message(command, answerHeaders, answer);
239 emitter.EmitMessage(receiver, message);
240 }
241
242
243 static void Execute(IMessageEmitter& emitter,
215 const Orthanc::WebServiceParameters& orthanc, 244 const Orthanc::WebServiceParameters& orthanc,
216 const IObserver& receiver, 245 const IObserver& receiver,
217 const OrthancRestApiCommand& command) 246 const OrthancRestApiCommand& command)
218 { 247 {
219 Orthanc::HttpClient client(orthanc, command.GetUri()); 248 Orthanc::HttpClient client(orthanc, command.GetUri());
304 333
305 sleepingCommands_->Add(item.GetReceiver(), copy.release()); 334 sleepingCommands_->Add(item.GetReceiver(), copy.release());
306 335
307 break; 336 break;
308 } 337 }
338
339 case IOracleCommand::Type_Http:
340 Execute(emitter_, item.GetReceiver(),
341 dynamic_cast<const HttpCommand&>(item.GetCommand()));
342 break;
309 343
310 case IOracleCommand::Type_OrthancRestApi: 344 case IOracleCommand::Type_OrthancRestApi:
311 Execute(emitter_, orthanc_, item.GetReceiver(), 345 Execute(emitter_, orthanc_, item.GetReceiver(),
312 dynamic_cast<const OrthancRestApiCommand&>(item.GetCommand())); 346 dynamic_cast<const OrthancRestApiCommand&>(item.GetCommand()));
313 break; 347 break;