Mercurial > hg > orthanc
diff Plugins/Include/orthanc/OrthancCPlugin.h @ 3387:a48d652f1500
new function OrthancPluginHttpClientChunkedBody(), new class OrthancPlugins::HttpClient
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 05 Jun 2019 17:17:48 +0200 |
parents | 56ea9c476dba |
children | ad434967a68c |
line wrap: on
line diff
--- a/Plugins/Include/orthanc/OrthancCPlugin.h Wed Jun 05 14:40:14 2019 +0200 +++ b/Plugins/Include/orthanc/OrthancCPlugin.h Wed Jun 05 17:17:48 2019 +0200 @@ -120,7 +120,7 @@ #define ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER 1 #define ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER 5 -#define ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER 4 +#define ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER 7 #if !defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) @@ -429,6 +429,7 @@ _OrthancPluginService_SetMetricsValue = 31, _OrthancPluginService_EncodeDicomWebJson = 32, _OrthancPluginService_EncodeDicomWebXml = 33, + _OrthancPluginService_HttpClientChunkedBody = 34, /* New in Orthanc 1.5.7 */ /* Registration of callbacks */ _OrthancPluginService_RegisterRestCallback = 1000, @@ -6794,6 +6795,110 @@ } + + + + + + + + + + + + + + + + typedef uint8_t (*OrthancPluginChunkedBodyIsDone) (void* body); + + typedef OrthancPluginErrorCode (*OrthancPluginChunkedBodyNext) (void* body); + + typedef const void* (*OrthancPluginChunkedBodyGetChunkData) (void* body); + + typedef uint32_t (*OrthancPluginChunkedBodyGetChunkSize) (void* body); + + + + typedef struct + { + OrthancPluginMemoryBuffer* answerBody; + OrthancPluginMemoryBuffer* answerHeaders; + uint16_t* httpStatus; + OrthancPluginHttpMethod method; + const char* url; + uint32_t headersCount; + const char* const* headersKeys; + const char* const* headersValues; + const char* username; + const char* password; + uint32_t timeout; + const char* certificateFile; + const char* certificateKeyFile; + const char* certificateKeyPassword; + uint8_t pkcs11; + void* body; + OrthancPluginChunkedBodyIsDone bodyDone; + OrthancPluginChunkedBodyGetChunkData bodyChunkData; + OrthancPluginChunkedBodyGetChunkSize bodyChunkSize; + OrthancPluginChunkedBodyNext bodyNext; + } _OrthancPluginHttpClientChunkedBody; + + ORTHANC_PLUGIN_INLINE OrthancPluginErrorCode OrthancPluginHttpClientChunkedBody( + OrthancPluginContext* context, + OrthancPluginMemoryBuffer* answerBody, + OrthancPluginMemoryBuffer* answerHeaders, + uint16_t* httpStatus, + OrthancPluginHttpMethod method, + const char* url, + uint32_t headersCount, + const char* const* headersKeys, + const char* const* headersValues, + const char* username, + const char* password, + uint32_t timeout, + const char* certificateFile, + const char* certificateKeyFile, + const char* certificateKeyPassword, + uint8_t pkcs11, + void* body, + OrthancPluginChunkedBodyIsDone bodyDone, + OrthancPluginChunkedBodyGetChunkData bodyChunkData, + OrthancPluginChunkedBodyGetChunkSize bodyChunkSize, + OrthancPluginChunkedBodyNext bodyNext) + { + _OrthancPluginHttpClientChunkedBody params; + memset(¶ms, 0, sizeof(params)); + + /* In common with OrthancPluginHttpClient() */ + params.answerBody = answerBody; + params.answerHeaders = answerHeaders; + params.httpStatus = httpStatus; + params.method = method; + params.url = url; + params.headersCount = headersCount; + params.headersKeys = headersKeys; + params.headersValues = headersValues; + params.username = username; + params.password = password; + params.timeout = timeout; + params.certificateFile = certificateFile; + params.certificateKeyFile = certificateKeyFile; + params.certificateKeyPassword = certificateKeyPassword; + params.pkcs11 = pkcs11; + + /* For body stream */ + params.body = body; + params.bodyDone = bodyDone; + params.bodyChunkData = bodyChunkData; + params.bodyChunkSize = bodyChunkSize; + params.bodyNext = bodyNext; + + return context->InvokeService(context, _OrthancPluginService_HttpClientChunkedBody, ¶ms); + } + + + #ifdef __cplusplus } #endif