Mercurial > hg > orthanc
diff OrthancServer/OrthancRestApi/OrthancRestModalities.cpp @ 1446:8dc80ba768aa
refactoring: IHttpHandler does not use std::string to hold the request body
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 01 Jul 2015 13:16:12 +0200 |
parents | 0a355eeeb351 |
children | f967bdf8534e |
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi/OrthancRestModalities.cpp Wed Jul 01 12:30:19 2015 +0200 +++ b/OrthancServer/OrthancRestApi/OrthancRestModalities.cpp Wed Jul 01 13:16:12 2015 +0200 @@ -82,12 +82,13 @@ ***************************************************************************/ static bool MergeQueryAndTemplate(DicomMap& result, - const std::string& postData) + const char* postData, + size_t postSize) { Json::Value query; Json::Reader reader; - if (!reader.parse(postData, query) || + if (!reader.parse(postData, postData + postSize, query) || query.type() != Json::objectValue) { return false; @@ -169,7 +170,7 @@ DicomMap fields; DicomMap::SetupFindPatientTemplate(fields); - if (!MergeQueryAndTemplate(fields, call.GetPostBody())) + if (!MergeQueryAndTemplate(fields, call.GetBodyData(), call.GetBodySize())) { return; } @@ -193,7 +194,7 @@ DicomMap fields; DicomMap::SetupFindStudyTemplate(fields); - if (!MergeQueryAndTemplate(fields, call.GetPostBody())) + if (!MergeQueryAndTemplate(fields, call.GetBodyData(), call.GetBodySize())) { return; } @@ -223,7 +224,7 @@ DicomMap fields; DicomMap::SetupFindSeriesTemplate(fields); - if (!MergeQueryAndTemplate(fields, call.GetPostBody())) + if (!MergeQueryAndTemplate(fields, call.GetBodyData(), call.GetBodySize())) { return; } @@ -254,7 +255,7 @@ DicomMap fields; DicomMap::SetupFindInstanceTemplate(fields); - if (!MergeQueryAndTemplate(fields, call.GetPostBody())) + if (!MergeQueryAndTemplate(fields, call.GetBodyData(), call.GetBodySize())) { return; } @@ -287,7 +288,7 @@ DicomMap m; DicomMap::SetupFindPatientTemplate(m); - if (!MergeQueryAndTemplate(m, call.GetPostBody())) + if (!MergeQueryAndTemplate(m, call.GetBodyData(), call.GetBodySize())) { return; } @@ -307,7 +308,7 @@ FromDcmtkBridge::ToJson(patient, patients.GetAnswer(i), true); DicomMap::SetupFindStudyTemplate(m); - if (!MergeQueryAndTemplate(m, call.GetPostBody())) + if (!MergeQueryAndTemplate(m, call.GetBodyData(), call.GetBodySize())) { return; } @@ -325,7 +326,7 @@ FromDcmtkBridge::ToJson(study, studies.GetAnswer(j), true); DicomMap::SetupFindSeriesTemplate(m); - if (!MergeQueryAndTemplate(m, call.GetPostBody())) + if (!MergeQueryAndTemplate(m, call.GetBodyData(), call.GetBodySize())) { return; } @@ -474,10 +475,13 @@ { size_t index = boost::lexical_cast<size_t>(call.GetUriComponent("index", "")); - LOG(WARNING) << "Driving C-Move SCU on modality: " << call.GetPostBody(); + std::string modality; + call.BodyToString(modality); + + LOG(WARNING) << "Driving C-Move SCU on modality: " << modality; QueryAccessor query(call); - query->Retrieve(call.GetPostBody(), index); + query->Retrieve(modality, index); // Retrieve has succeeded call.GetOutput().AnswerBuffer("{}", "application/json"); @@ -486,10 +490,13 @@ static void RetrieveAllAnswers(RestApiPostCall& call) { - LOG(WARNING) << "Driving C-Move SCU on modality: " << call.GetPostBody(); + std::string modality; + call.BodyToString(modality); + + LOG(WARNING) << "Driving C-Move SCU on modality: " << modality; QueryAccessor query(call); - query->Retrieve(call.GetPostBody()); + query->Retrieve(modality); // Retrieve has succeeded call.GetOutput().AnswerBuffer("{}", "application/json"); @@ -562,11 +569,14 @@ ServerContext& context = OrthancRestApi::GetContext(call); Json::Value request; - if (Toolbox::IsSHA1(call.GetPostBody())) + if (Toolbox::IsSHA1(call.GetBodyData(), call.GetBodySize())) { + std::string s; + call.BodyToString(s); + // This is for compatibility with Orthanc <= 0.5.1. request = Json::arrayValue; - request.append(Toolbox::StripSpaces(call.GetPostBody())); + request.append(Toolbox::StripSpaces(s)); } else if (!call.ParseJsonRequest(request)) { @@ -797,7 +807,7 @@ { Json::Value json; Json::Reader reader; - if (reader.parse(call.GetPutBody(), json)) + if (reader.parse(call.GetBodyData(), call.GetBodyData() + call.GetBodySize(), json)) { RemoteModalityParameters modality; modality.FromJson(json); @@ -818,7 +828,7 @@ { Json::Value json; Json::Reader reader; - if (reader.parse(call.GetPutBody(), json)) + if (reader.parse(call.GetBodyData(), call.GetBodyData() + call.GetBodySize(), json)) { OrthancPeerParameters peer; peer.FromJson(json);