comparison Plugins/Engine/OrthancPlugins.cpp @ 1133:382e162c074c

rename
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 09 Sep 2014 10:45:14 +0200
parents f739d3f6cfcf
children 67c3c1e4a6e0
comparison
equal deleted inserted replaced
1132:f739d3f6cfcf 1133:382e162c074c
28 * You should have received a copy of the GNU General Public License 28 * You should have received a copy of the GNU General Public License
29 * along with this program. If not, see <http://www.gnu.org/licenses/>. 29 * along with this program. If not, see <http://www.gnu.org/licenses/>.
30 **/ 30 **/
31 31
32 32
33 #include "PluginsHttpHandler.h" 33 #include "OrthancPlugins.h"
34 34
35 #include "../../Core/ChunkedBuffer.h" 35 #include "../../Core/ChunkedBuffer.h"
36 #include "../../Core/OrthancException.h" 36 #include "../../Core/OrthancException.h"
37 #include "../../Core/Toolbox.h" 37 #include "../../Core/Toolbox.h"
38 #include "../../Core/HttpServer/HttpOutput.h" 38 #include "../../Core/HttpServer/HttpOutput.h"
76 }; 76 };
77 } 77 }
78 78
79 79
80 80
81 struct PluginsHttpHandler::PImpl 81 struct OrthancPlugins::PImpl
82 { 82 {
83 typedef std::pair<boost::regex*, OrthancPluginRestCallback> RestCallback; 83 typedef std::pair<boost::regex*, OrthancPluginRestCallback> RestCallback;
84 typedef std::list<RestCallback> RestCallbacks; 84 typedef std::list<RestCallback> RestCallbacks;
85 typedef std::list<OrthancPluginOnStoredInstanceCallback> OnStoredCallbacks; 85 typedef std::list<OrthancPluginOnStoredInstanceCallback> OnStoredCallbacks;
86 86
114 114
115 return result; 115 return result;
116 } 116 }
117 117
118 118
119 PluginsHttpHandler::PluginsHttpHandler(ServerContext& context) 119 OrthancPlugins::OrthancPlugins(ServerContext& context)
120 { 120 {
121 pimpl_.reset(new PImpl(context)); 121 pimpl_.reset(new PImpl(context));
122 } 122 }
123 123
124 124
125 PluginsHttpHandler::~PluginsHttpHandler() 125 OrthancPlugins::~OrthancPlugins()
126 { 126 {
127 for (PImpl::RestCallbacks::iterator it = pimpl_->restCallbacks_.begin(); 127 for (PImpl::RestCallbacks::iterator it = pimpl_->restCallbacks_.begin();
128 it != pimpl_->restCallbacks_.end(); ++it) 128 it != pimpl_->restCallbacks_.end(); ++it)
129 { 129 {
130 // Delete the regular expression associated with this callback 130 // Delete the regular expression associated with this callback
149 pos++; 149 pos++;
150 } 150 }
151 } 151 }
152 152
153 153
154 bool PluginsHttpHandler::Handle(HttpOutput& output, 154 bool OrthancPlugins::Handle(HttpOutput& output,
155 HttpMethod method, 155 HttpMethod method,
156 const UriComponents& uri, 156 const UriComponents& uri,
157 const Arguments& headers, 157 const Arguments& headers,
158 const Arguments& getArguments, 158 const Arguments& getArguments,
159 const std::string& postData) 159 const std::string& postData)
269 return true; 269 return true;
270 } 270 }
271 } 271 }
272 272
273 273
274 void PluginsHttpHandler::SignalStoredInstance(DicomInstanceToStore& instance, 274 void OrthancPlugins::SignalStoredInstance(DicomInstanceToStore& instance,
275 const std::string& instanceId) 275 const std::string& instanceId)
276 { 276 {
277 for (PImpl::OnStoredCallbacks::const_iterator 277 for (PImpl::OnStoredCallbacks::const_iterator
278 callback = pimpl_->onStoredCallbacks_.begin(); 278 callback = pimpl_->onStoredCallbacks_.begin();
279 callback != pimpl_->onStoredCallbacks_.end(); ++callback) 279 callback != pimpl_->onStoredCallbacks_.end(); ++callback)
323 CopyToMemoryBuffer(target, str.c_str(), str.size()); 323 CopyToMemoryBuffer(target, str.c_str(), str.size());
324 } 324 }
325 } 325 }
326 326
327 327
328 void PluginsHttpHandler::RegisterRestCallback(const void* parameters) 328 void OrthancPlugins::RegisterRestCallback(const void* parameters)
329 { 329 {
330 const _OrthancPluginRestCallback& p = 330 const _OrthancPluginRestCallback& p =
331 *reinterpret_cast<const _OrthancPluginRestCallback*>(parameters); 331 *reinterpret_cast<const _OrthancPluginRestCallback*>(parameters);
332 332
333 LOG(INFO) << "Plugin has registered a REST callback on: " << p.pathRegularExpression; 333 LOG(INFO) << "Plugin has registered a REST callback on: " << p.pathRegularExpression;
334 pimpl_->restCallbacks_.push_back(std::make_pair(new boost::regex(p.pathRegularExpression), p.callback)); 334 pimpl_->restCallbacks_.push_back(std::make_pair(new boost::regex(p.pathRegularExpression), p.callback));
335 } 335 }
336 336
337 337
338 338
339 void PluginsHttpHandler::RegisterOnStoredInstanceCallback(const void* parameters) 339 void OrthancPlugins::RegisterOnStoredInstanceCallback(const void* parameters)
340 { 340 {
341 const _OrthancPluginOnStoredInstanceCallback& p = 341 const _OrthancPluginOnStoredInstanceCallback& p =
342 *reinterpret_cast<const _OrthancPluginOnStoredInstanceCallback*>(parameters); 342 *reinterpret_cast<const _OrthancPluginOnStoredInstanceCallback*>(parameters);
343 343
344 LOG(INFO) << "Plugin has registered an OnStoredInstance callback"; 344 LOG(INFO) << "Plugin has registered an OnStoredInstance callback";
345 pimpl_->onStoredCallbacks_.push_back(p.callback); 345 pimpl_->onStoredCallbacks_.push_back(p.callback);
346 } 346 }
347 347
348 348
349 349
350 void PluginsHttpHandler::AnswerBuffer(const void* parameters) 350 void OrthancPlugins::AnswerBuffer(const void* parameters)
351 { 351 {
352 const _OrthancPluginAnswerBuffer& p = 352 const _OrthancPluginAnswerBuffer& p =
353 *reinterpret_cast<const _OrthancPluginAnswerBuffer*>(parameters); 353 *reinterpret_cast<const _OrthancPluginAnswerBuffer*>(parameters);
354 354
355 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output); 355 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output);
356 translatedOutput->SetContentType(p.mimeType); 356 translatedOutput->SetContentType(p.mimeType);
357 translatedOutput->SendBody(p.answer, p.answerSize); 357 translatedOutput->SendBody(p.answer, p.answerSize);
358 } 358 }
359 359
360 360
361 void PluginsHttpHandler::Redirect(const void* parameters) 361 void OrthancPlugins::Redirect(const void* parameters)
362 { 362 {
363 const _OrthancPluginOutputPlusArgument& p = 363 const _OrthancPluginOutputPlusArgument& p =
364 *reinterpret_cast<const _OrthancPluginOutputPlusArgument*>(parameters); 364 *reinterpret_cast<const _OrthancPluginOutputPlusArgument*>(parameters);
365 365
366 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output); 366 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output);
367 translatedOutput->Redirect(p.argument); 367 translatedOutput->Redirect(p.argument);
368 } 368 }
369 369
370 370
371 void PluginsHttpHandler::SendHttpStatusCode(const void* parameters) 371 void OrthancPlugins::SendHttpStatusCode(const void* parameters)
372 { 372 {
373 const _OrthancPluginSendHttpStatusCode& p = 373 const _OrthancPluginSendHttpStatusCode& p =
374 *reinterpret_cast<const _OrthancPluginSendHttpStatusCode*>(parameters); 374 *reinterpret_cast<const _OrthancPluginSendHttpStatusCode*>(parameters);
375 375
376 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output); 376 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output);
377 translatedOutput->SendStatus(static_cast<HttpStatus>(p.status)); 377 translatedOutput->SendStatus(static_cast<HttpStatus>(p.status));
378 } 378 }
379 379
380 380
381 void PluginsHttpHandler::SendUnauthorized(const void* parameters) 381 void OrthancPlugins::SendUnauthorized(const void* parameters)
382 { 382 {
383 const _OrthancPluginOutputPlusArgument& p = 383 const _OrthancPluginOutputPlusArgument& p =
384 *reinterpret_cast<const _OrthancPluginOutputPlusArgument*>(parameters); 384 *reinterpret_cast<const _OrthancPluginOutputPlusArgument*>(parameters);
385 385
386 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output); 386 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output);
387 translatedOutput->SendUnauthorized(p.argument); 387 translatedOutput->SendUnauthorized(p.argument);
388 } 388 }
389 389
390 390
391 void PluginsHttpHandler::SendMethodNotAllowed(const void* parameters) 391 void OrthancPlugins::SendMethodNotAllowed(const void* parameters)
392 { 392 {
393 const _OrthancPluginOutputPlusArgument& p = 393 const _OrthancPluginOutputPlusArgument& p =
394 *reinterpret_cast<const _OrthancPluginOutputPlusArgument*>(parameters); 394 *reinterpret_cast<const _OrthancPluginOutputPlusArgument*>(parameters);
395 395
396 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output); 396 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output);
397 translatedOutput->SendMethodNotAllowed(p.argument); 397 translatedOutput->SendMethodNotAllowed(p.argument);
398 } 398 }
399 399
400 400
401 void PluginsHttpHandler::SetCookie(const void* parameters) 401 void OrthancPlugins::SetCookie(const void* parameters)
402 { 402 {
403 const _OrthancPluginSetCookie& p = 403 const _OrthancPluginSetCookie& p =
404 *reinterpret_cast<const _OrthancPluginSetCookie*>(parameters); 404 *reinterpret_cast<const _OrthancPluginSetCookie*>(parameters);
405 405
406 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output); 406 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output);
407 translatedOutput->SetCookie(p.cookie, p.value); 407 translatedOutput->SetCookie(p.cookie, p.value);
408 } 408 }
409 409
410 410
411 void PluginsHttpHandler::CompressAndAnswerPngImage(const void* parameters) 411 void OrthancPlugins::CompressAndAnswerPngImage(const void* parameters)
412 { 412 {
413 const _OrthancPluginCompressAndAnswerPngImage& p = 413 const _OrthancPluginCompressAndAnswerPngImage& p =
414 *reinterpret_cast<const _OrthancPluginCompressAndAnswerPngImage*>(parameters); 414 *reinterpret_cast<const _OrthancPluginCompressAndAnswerPngImage*>(parameters);
415 415
416 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output); 416 HttpOutput* translatedOutput = reinterpret_cast<HttpOutput*>(p.output);
452 translatedOutput->SetContentType("image/png"); 452 translatedOutput->SetContentType("image/png");
453 translatedOutput->SendBody(png); 453 translatedOutput->SendBody(png);
454 } 454 }
455 455
456 456
457 void PluginsHttpHandler::GetDicomForInstance(const void* parameters) 457 void OrthancPlugins::GetDicomForInstance(const void* parameters)
458 { 458 {
459 const _OrthancPluginGetDicomForInstance& p = 459 const _OrthancPluginGetDicomForInstance& p =
460 *reinterpret_cast<const _OrthancPluginGetDicomForInstance*>(parameters); 460 *reinterpret_cast<const _OrthancPluginGetDicomForInstance*>(parameters);
461 461
462 std::string dicom; 462 std::string dicom;
463 pimpl_->context_.ReadFile(dicom, p.instanceId, FileContentType_Dicom); 463 pimpl_->context_.ReadFile(dicom, p.instanceId, FileContentType_Dicom);
464 CopyToMemoryBuffer(*p.target, dicom); 464 CopyToMemoryBuffer(*p.target, dicom);
465 } 465 }
466 466
467 467
468 void PluginsHttpHandler::RestApiGet(const void* parameters) 468 void OrthancPlugins::RestApiGet(const void* parameters)
469 { 469 {
470 const _OrthancPluginRestApiGet& p = 470 const _OrthancPluginRestApiGet& p =
471 *reinterpret_cast<const _OrthancPluginRestApiGet*>(parameters); 471 *reinterpret_cast<const _OrthancPluginRestApiGet*>(parameters);
472 472
473 HttpHandler::Arguments headers; // No HTTP header 473 HttpHandler::Arguments headers; // No HTTP header
494 throw OrthancException(ErrorCode_BadRequest); 494 throw OrthancException(ErrorCode_BadRequest);
495 } 495 }
496 } 496 }
497 497
498 498
499 void PluginsHttpHandler::RestApiPostPut(bool isPost, const void* parameters) 499 void OrthancPlugins::RestApiPostPut(bool isPost, const void* parameters)
500 { 500 {
501 const _OrthancPluginRestApiPostPut& p = 501 const _OrthancPluginRestApiPostPut& p =
502 *reinterpret_cast<const _OrthancPluginRestApiPostPut*>(parameters); 502 *reinterpret_cast<const _OrthancPluginRestApiPostPut*>(parameters);
503 503
504 HttpHandler::Arguments headers; // No HTTP header 504 HttpHandler::Arguments headers; // No HTTP header
528 throw OrthancException(ErrorCode_BadRequest); 528 throw OrthancException(ErrorCode_BadRequest);
529 } 529 }
530 } 530 }
531 531
532 532
533 void PluginsHttpHandler::RestApiDelete(const void* parameters) 533 void OrthancPlugins::RestApiDelete(const void* parameters)
534 { 534 {
535 // The "parameters" point to the URI 535 // The "parameters" point to the URI
536 UriComponents uri; 536 UriComponents uri;
537 Toolbox::SplitUriComponents(uri, reinterpret_cast<const char*>(parameters)); 537 Toolbox::SplitUriComponents(uri, reinterpret_cast<const char*>(parameters));
538 538
552 throw OrthancException(ErrorCode_BadRequest); 552 throw OrthancException(ErrorCode_BadRequest);
553 } 553 }
554 } 554 }
555 555
556 556
557 void PluginsHttpHandler::LookupResource(_OrthancPluginService service, 557 void OrthancPlugins::LookupResource(_OrthancPluginService service,
558 const void* parameters) 558 const void* parameters)
559 { 559 {
560 const _OrthancPluginLookupResource& p = 560 const _OrthancPluginLookupResource& p =
561 *reinterpret_cast<const _OrthancPluginLookupResource*>(parameters); 561 *reinterpret_cast<const _OrthancPluginLookupResource*>(parameters);
562 562
724 throw OrthancException(ErrorCode_InternalError); 724 throw OrthancException(ErrorCode_InternalError);
725 } 725 }
726 } 726 }
727 727
728 728
729 bool PluginsHttpHandler::InvokeService(_OrthancPluginService service, 729 bool OrthancPlugins::InvokeService(_OrthancPluginService service,
730 const void* parameters) 730 const void* parameters)
731 { 731 {
732 switch (service) 732 switch (service)
733 { 733 {
734 case _OrthancPluginService_RegisterRestCallback: 734 case _OrthancPluginService_RegisterRestCallback:
809 return false; 809 return false;
810 } 810 }
811 } 811 }
812 812
813 813
814 void PluginsHttpHandler::SetOrthancRestApi(OrthancRestApi& restApi) 814 void OrthancPlugins::SetOrthancRestApi(OrthancRestApi& restApi)
815 { 815 {
816 pimpl_->restApi_ = &restApi; 816 pimpl_->restApi_ = &restApi;
817 } 817 }
818 818
819 } 819 }