Mercurial > hg > orthanc
diff Plugins/Engine/OrthancPlugins.cpp @ 1780:94990da8710e
OrthancPluginRestApiGet2
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 13 Nov 2015 15:06:45 +0100 |
parents | 8790488ae98b |
children | 30e97a1f4093 |
line wrap: on
line diff
--- a/Plugins/Engine/OrthancPlugins.cpp Fri Nov 13 13:20:28 2015 +0100 +++ b/Plugins/Engine/OrthancPlugins.cpp Fri Nov 13 15:06:45 2015 +0100 @@ -819,6 +819,36 @@ } + void OrthancPlugins::RestApiGet2(const void* parameters) + { + const _OrthancPluginRestApiGet2& p = + *reinterpret_cast<const _OrthancPluginRestApiGet2*>(parameters); + + LOG(INFO) << "Plugin making REST GET call on URI " << p.uri + << (p.afterPlugins ? " (after plugins)" : " (built-in API)"); + + IHttpHandler::Arguments headers; + + for (uint32_t i = 0; i < p.headersCount; i++) + { + headers[p.headersKeys[i]] = p.headersValues[i]; + } + + CheckContextAvailable(); + IHttpHandler& handler = pimpl_->context_->GetHttpHandler().RestrictToOrthancRestApi(!p.afterPlugins); + + std::string result; + if (HttpToolbox::SimpleGet(result, handler, RequestOrigin_Plugins, p.uri, headers)) + { + CopyToMemoryBuffer(*p.target, result); + } + else + { + throw OrthancException(ErrorCode_BadRequest); + } + } + + void OrthancPlugins::RestApiPostPut(bool isPost, const void* parameters, bool afterPlugins) @@ -1395,6 +1425,10 @@ RestApiGet(parameters, true); return true; + case _OrthancPluginService_RestApiGet2: + RestApiGet2(parameters); + return true; + case _OrthancPluginService_RestApiPost: RestApiPostPut(true, parameters, false); return true;