comparison Plugins/Engine/OrthancPlugins.cpp @ 1437:02f5a3f5c0a0

access to the REST API from Lua
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 30 Jun 2015 18:41:33 +0200
parents 0a3e3be59094
children f3672356c121
comparison
equal deleted inserted replaced
1436:0a3e3be59094 1437:02f5a3f5c0a0
31 31
32 32
33 #include "OrthancPlugins.h" 33 #include "OrthancPlugins.h"
34 34
35 #include "../../Core/ChunkedBuffer.h" 35 #include "../../Core/ChunkedBuffer.h"
36 #include "../../Core/HttpServer/HttpOutput.h" 36 #include "../../Core/HttpServer/StringHttpOutput.h"
37 #include "../../Core/ImageFormats/PngWriter.h" 37 #include "../../Core/ImageFormats/PngWriter.h"
38 #include "../../Core/OrthancException.h" 38 #include "../../Core/OrthancException.h"
39 #include "../../Core/Toolbox.h" 39 #include "../../Core/Toolbox.h"
40 #include "../../OrthancServer/OrthancInitialization.h" 40 #include "../../OrthancServer/OrthancInitialization.h"
41 #include "../../OrthancServer/OrthancRestApi/OrthancRestApi.h" 41 #include "../../OrthancServer/OrthancRestApi/OrthancRestApi.h"
104 return OrthancPluginChangeType_StableStudy; 104 return OrthancPluginChangeType_StableStudy;
105 105
106 default: 106 default:
107 throw OrthancException(ErrorCode_ParameterOutOfRange); 107 throw OrthancException(ErrorCode_ParameterOutOfRange);
108 } 108 }
109 }
110
111
112 namespace
113 {
114 // Anonymous namespace to avoid clashes between compilation modules
115 class StringHttpOutput : public IHttpOutputStream
116 {
117 private:
118 ChunkedBuffer buffer_;
119
120 public:
121 void GetOutput(std::string& output)
122 {
123 buffer_.Flatten(output);
124 }
125
126 virtual void OnHttpStatusReceived(HttpStatus status)
127 {
128 if (status != HttpStatus_200_Ok)
129 {
130 throw OrthancException(ErrorCode_BadRequest);
131 }
132 }
133
134 virtual void Send(bool isHeader, const void* buffer, size_t length)
135 {
136 if (!isHeader)
137 {
138 buffer_.AddChunk(reinterpret_cast<const char*>(buffer), length);
139 }
140 }
141 };
142 } 109 }
143 110
144 111
145 112
146 struct OrthancPlugins::PImpl 113 struct OrthancPlugins::PImpl
647 bool afterPlugins) 614 bool afterPlugins)
648 { 615 {
649 const _OrthancPluginRestApiGet& p = 616 const _OrthancPluginRestApiGet& p =
650 *reinterpret_cast<const _OrthancPluginRestApiGet*>(parameters); 617 *reinterpret_cast<const _OrthancPluginRestApiGet*>(parameters);
651 618
619 // TODO : Use "HttpHandler::SimpleGet()"
620
652 HttpHandler::Arguments headers; // No HTTP header 621 HttpHandler::Arguments headers; // No HTTP header
653 std::string body; // No body for a GET request 622 std::string body; // No body for a GET request
654 623
655 UriComponents uri; 624 UriComponents uri;
656 HttpHandler::GetArguments getArguments; 625 HttpHandler::GetArguments getArguments;