Mercurial > hg > orthanc-dicomweb
changeset 124:acb4d6bf9ad1 dev
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 22 Jun 2016 16:11:03 +0200 |
parents | d0f72cc15602 |
children | 8fe231bd64d1 |
files | Plugin/StowRsClient.cpp |
diffstat | 1 files changed, 21 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/Plugin/StowRsClient.cpp Wed Jun 22 15:57:43 2016 +0200 +++ b/Plugin/StowRsClient.cpp Wed Jun 22 16:11:03 2016 +0200 @@ -110,10 +110,13 @@ static void SendStowRequest(const Orthanc::WebServiceParameters& server, - const std::string& mime, + const std::map<std::string, std::string>& httpHeaders, + const std::string& mime, // TODO remove this const std::string& body, size_t countInstances) { + // TODO use httpHeaders + const char* headersKeys[] = { "Accept", "Expect", @@ -203,19 +206,25 @@ } -static void GetListOfInstances(std::list<std::string>& instances, - const OrthancPluginHttpRequest* request) +static void ParseRestRequest(std::list<std::string>& instances /* out */, + std::map<std::string, std::string>& httpHeaders /* out */, + const OrthancPluginHttpRequest* request /* in */) { - Json::Value resources; + instances.clear(); + httpHeaders.clear(); + + Json::Value body; Json::Reader reader; - if (!reader.parse(request->body, request->body + request->bodySize, resources) || - resources.type() != Json::arrayValue) + if (!reader.parse(request->body, request->body + request->bodySize, body) || + body.type() != Json::arrayValue) { std::string s = "The list of resources to be sent through DICOMweb STOW-RS must be given as a JSON array"; OrthancPluginLogError(context_, s.c_str()); throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); } + Json::Value& resources = body; // TODO + // Extract information about all the child instances for (Json::Value::ArrayIndex i = 0; i < resources.size(); i++) { @@ -261,6 +270,7 @@ static void SendStowChunks(const Orthanc::WebServiceParameters& server, + const std::map<std::string, std::string>& httpHeaders, const std::string& mime, const std::string& boundary, Orthanc::ChunkedBuffer& chunks, @@ -276,7 +286,7 @@ std::string body; chunks.Flatten(body); - SendStowRequest(server, mime, body, countInstances); + SendStowRequest(server, httpHeaders, mime, body, countInstances); countInstances = 0; } } @@ -300,7 +310,8 @@ Orthanc::WebServiceParameters server(OrthancPlugins::DicomWebServers::GetInstance().GetServer(request->groups[0])); std::list<std::string> instances; - GetListOfInstances(instances, request); + std::map<std::string, std::string> httpHeaders; + ParseRestRequest(instances, httpHeaders, request); { std::string s = ("Sending " + boost::lexical_cast<std::string>(instances.size()) + @@ -342,11 +353,11 @@ chunks.AddChunk(dicom); countInstances ++; - SendStowChunks(server, mime, boundary, chunks, countInstances, false); + SendStowChunks(server, httpHeaders, mime, boundary, chunks, countInstances, false); } } - SendStowChunks(server, mime, boundary, chunks, countInstances, true); + SendStowChunks(server, httpHeaders, mime, boundary, chunks, countInstances, true); std::string answer = "{}\n"; OrthancPluginAnswerBuffer(context_, output, answer.c_str(), answer.size(), "application/json");