Mercurial > hg > orthanc-stone
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; |