Mercurial > hg > orthanc-dicomweb
changeset 141:022cb1de0db0 dev
simplifications
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 24 Jun 2016 22:25:14 +0200 (2016-06-24) |
parents | 29f7e2571143 |
children | 1272fbee1ef9 |
files | Plugin/DicomWebClient.cpp Plugin/DicomWebServers.cpp Plugin/Plugin.cpp Plugin/StowRs.cpp Plugin/WadoRsRetrieveFrames.cpp Plugin/WadoUri.cpp |
diffstat | 6 files changed, 60 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- a/Plugin/DicomWebClient.cpp Fri Jun 24 21:59:32 2016 +0200 +++ b/Plugin/DicomWebClient.cpp Fri Jun 24 22:25:14 2016 +0200 @@ -240,6 +240,8 @@ const char* /*url*/, const OrthancPluginHttpRequest* request) { + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + if (request->groupsCount != 1) { throw OrthancPlugins::PluginException(OrthancPluginErrorCode_BadRequest); @@ -247,7 +249,7 @@ if (request->method != OrthancPluginHttpMethod_Post) { - OrthancPluginSendMethodNotAllowed(OrthancPlugins::Configuration::GetContext(), output, "POST"); + OrthancPluginSendMethodNotAllowed(context, output, "POST"); return; } @@ -256,18 +258,18 @@ std::string boundary; { - char* uuid = OrthancPluginGenerateUuid(OrthancPlugins::Configuration::GetContext()); + char* uuid = OrthancPluginGenerateUuid(context); try { boundary.assign(uuid); } catch (...) { - OrthancPluginFreeString(OrthancPlugins::Configuration::GetContext(), uuid); + OrthancPluginFreeString(context, uuid); throw OrthancPlugins::PluginException(OrthancPluginErrorCode_NotEnoughMemory); } - OrthancPluginFreeString(OrthancPlugins::Configuration::GetContext(), uuid); + OrthancPluginFreeString(context, uuid); } std::string mime = "multipart/related; type=application/dicom; boundary=" + boundary; @@ -288,7 +290,7 @@ for (std::list<std::string>::const_iterator it = instances.begin(); it != instances.end(); it++) { - OrthancPlugins::MemoryBuffer dicom(OrthancPlugins::Configuration::GetContext()); + OrthancPlugins::MemoryBuffer dicom(context); if (dicom.RestApiGet("/instances/" + *it + "/file", false)) { chunks.AddChunk("\r\n--" + boundary + "\r\n" + @@ -305,7 +307,7 @@ SendStowChunks(server, httpHeaders, boundary, chunks, countInstances, true); std::string answer = "{}\n"; - OrthancPluginAnswerBuffer(OrthancPlugins::Configuration::GetContext(), output, answer.c_str(), answer.size(), "application/json"); + OrthancPluginAnswerBuffer(context, output, answer.c_str(), answer.size(), "application/json"); } @@ -343,9 +345,11 @@ static const char* HTTP_HEADERS = "HttpHeaders"; static const char* GET_ARGUMENTS = "Arguments"; + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + if (request->method != OrthancPluginHttpMethod_Post) { - OrthancPluginSendMethodNotAllowed(OrthancPlugins::Configuration::GetContext(), output, "POST"); + OrthancPluginSendMethodNotAllowed(context, output, "POST"); return; } @@ -372,7 +376,7 @@ std::map<std::string, std::string> httpHeaders; OrthancPlugins::ParseAssociativeArray(httpHeaders, body, HTTP_HEADERS); - OrthancPlugins::MemoryBuffer answerBody(OrthancPlugins::Configuration::GetContext()); + OrthancPlugins::MemoryBuffer answerBody(context); std::map<std::string, std::string> answerHeaders; OrthancPlugins::CallServer(answerBody, answerHeaders, server, OrthancPluginHttpMethod_Get, httpHeaders, uri, ""); @@ -394,11 +398,11 @@ } else { - OrthancPluginSetHttpHeader(OrthancPlugins::Configuration::GetContext(), output, it->first.c_str(), it->second.c_str()); + OrthancPluginSetHttpHeader(context, output, it->first.c_str(), it->second.c_str()); } } - OrthancPluginAnswerBuffer(OrthancPlugins::Configuration::GetContext(), output, + OrthancPluginAnswerBuffer(context, output, reinterpret_cast<const char*>(answerBody.GetData()), answerBody.GetSize(), contentType.c_str()); } @@ -416,6 +420,8 @@ static const std::string MULTIPART_RELATED = "multipart/related"; static const std::string APPLICATION_DICOM = "application/dicom"; + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + if (resource.type() != Json::objectValue) { OrthancPlugins::Configuration::LogError("Resources of interest for the DICOMweb WADO-RS Retrieve client " @@ -453,7 +459,7 @@ } } - OrthancPlugins::MemoryBuffer answerBody(OrthancPlugins::Configuration::GetContext()); + OrthancPlugins::MemoryBuffer answerBody(context); std::map<std::string, std::string> answerHeaders; OrthancPlugins::CallServer(answerBody, answerHeaders, server, OrthancPluginHttpMethod_Get, httpHeaders, uri, ""); @@ -521,7 +527,7 @@ } std::vector<OrthancPlugins::MultipartItem> parts; - OrthancPlugins::ParseMultipartBody(parts, OrthancPlugins::Configuration::GetContext(), + OrthancPlugins::ParseMultipartBody(parts, context, reinterpret_cast<const char*>(answerBody.GetData()), answerBody.GetSize(), boundary); @@ -537,7 +543,7 @@ throw OrthancPlugins::PluginException(OrthancPluginErrorCode_NetworkProtocol); } - OrthancPlugins::MemoryBuffer tmp(OrthancPlugins::Configuration::GetContext()); + OrthancPlugins::MemoryBuffer tmp(context); tmp.RestApiPost("/instances", parts[i].data_, parts[i].size_, false); Json::Value result; @@ -565,9 +571,11 @@ static const std::string RESOURCES("Resources"); static const char* HTTP_HEADERS = "HttpHeaders"; + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + if (request->method != OrthancPluginHttpMethod_Post) { - OrthancPluginSendMethodNotAllowed(OrthancPlugins::Configuration::GetContext(), output, "POST"); + OrthancPluginSendMethodNotAllowed(context, output, "POST"); return; } @@ -604,5 +612,5 @@ } std::string s = status.toStyledString(); - OrthancPluginAnswerBuffer(OrthancPlugins::Configuration::GetContext(), output, s.c_str(), s.size(), "application/json"); + OrthancPluginAnswerBuffer(context, output, s.c_str(), s.size(), "application/json"); }
--- a/Plugin/DicomWebServers.cpp Fri Jun 24 21:59:32 2016 +0200 +++ b/Plugin/DicomWebServers.cpp Fri Jun 24 22:25:14 2016 +0200 @@ -178,10 +178,12 @@ bodySize = body.size(); } + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + uint16_t status = 0; - MemoryBuffer answerHeadersTmp(OrthancPlugins::Configuration::GetContext()); + MemoryBuffer answerHeadersTmp(context); OrthancPluginErrorCode code = OrthancPluginHttpClient( - OrthancPlugins::Configuration::GetContext(), + context, /* Outputs */ *answerBody, *answerHeadersTmp, &status, method,
--- a/Plugin/Plugin.cpp Fri Jun 24 21:59:32 2016 +0200 +++ b/Plugin/Plugin.cpp Fri Jun 24 22:25:14 2016 +0200 @@ -91,9 +91,11 @@ const char* url, const OrthancPluginHttpRequest* request) { + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + if (request->method != OrthancPluginHttpMethod_Get) { - OrthancPluginSendMethodNotAllowed(OrthancPlugins::Configuration::GetContext(), output, "GET"); + OrthancPluginSendMethodNotAllowed(context, output, "GET"); } else { @@ -107,7 +109,7 @@ } std::string answer = json.toStyledString(); - OrthancPluginAnswerBuffer(OrthancPlugins::Configuration::GetContext(), output, answer.c_str(), answer.size(), "application/json"); + OrthancPluginAnswerBuffer(context, output, answer.c_str(), answer.size(), "application/json"); } } @@ -116,9 +118,11 @@ const char* /*url*/, const OrthancPluginHttpRequest* request) { + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + if (request->method != OrthancPluginHttpMethod_Get) { - OrthancPluginSendMethodNotAllowed(OrthancPlugins::Configuration::GetContext(), output, "GET"); + OrthancPluginSendMethodNotAllowed(context, output, "GET"); } else { @@ -131,7 +135,7 @@ json.append("stow"); std::string answer = json.toStyledString(); - OrthancPluginAnswerBuffer(OrthancPlugins::Configuration::GetContext(), output, answer.c_str(), answer.size(), "application/json"); + OrthancPluginAnswerBuffer(context, output, answer.c_str(), answer.size(), "application/json"); } }
--- a/Plugin/StowRs.cpp Fri Jun 24 21:59:32 2016 +0200 +++ b/Plugin/StowRs.cpp Fri Jun 24 22:25:14 2016 +0200 @@ -86,11 +86,13 @@ const char* url, const OrthancPluginHttpRequest* request) { + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + const std::string wadoBase = OrthancPlugins::Configuration::GetBaseUrl(request); if (request->method != OrthancPluginHttpMethod_Post) { - OrthancPluginSendMethodNotAllowed(OrthancPlugins::Configuration::GetContext(), output, "POST"); + OrthancPluginSendMethodNotAllowed(context, output, "POST"); return; } @@ -115,7 +117,7 @@ if (!OrthancPlugins::LookupHttpHeader(header, request, "content-type")) { OrthancPlugins::Configuration::LogError("No content type in the HTTP header of a STOW-RS request"); - OrthancPluginSendHttpStatusCode(OrthancPlugins::Configuration::GetContext(), output, 400 /* Bad request */); + OrthancPluginSendHttpStatusCode(context, output, 400 /* Bad request */); return; } @@ -128,7 +130,7 @@ attributes.find("boundary") == attributes.end()) { OrthancPlugins::Configuration::LogError("Unable to parse the content type of a STOW-RS request (" + application + ")"); - OrthancPluginSendHttpStatusCode(OrthancPlugins::Configuration::GetContext(), output, 400 /* Bad request */); + OrthancPluginSendHttpStatusCode(context, output, 400 /* Bad request */); return; } @@ -138,7 +140,7 @@ if (attributes["type"] != "application/dicom") { OrthancPlugins::Configuration::LogError("The STOW-RS plugin currently only supports application/dicom"); - OrthancPluginSendHttpStatusCode(OrthancPlugins::Configuration::GetContext(), output, 415 /* Unsupported media type */); + OrthancPluginSendHttpStatusCode(context, output, 415 /* Unsupported media type */); return; } @@ -149,7 +151,7 @@ gdcm::SmartPointer<gdcm::SequenceOfItems> failed = new gdcm::SequenceOfItems(); std::vector<OrthancPlugins::MultipartItem> items; - OrthancPlugins::ParseMultipartBody(items, OrthancPlugins::Configuration::GetContext(), request->body, request->bodySize, boundary); + OrthancPlugins::ParseMultipartBody(items, context, request->body, request->bodySize, boundary); for (size_t i = 0; i < items.size(); i++) @@ -159,7 +161,7 @@ { OrthancPlugins::Configuration::LogError("The STOW-RS request contains a part that is not " "\"application/dicom\" (it is: \"" + items[i].contentType_ + "\")"); - OrthancPluginSendHttpStatusCode(OrthancPlugins::Configuration::GetContext(), output, 415 /* Unsupported media type */); + OrthancPluginSendHttpStatusCode(context, output, 415 /* Unsupported media type */); return; } @@ -194,7 +196,7 @@ isFirst = false; } - OrthancPlugins::MemoryBuffer tmp(OrthancPlugins::Configuration::GetContext()); + OrthancPlugins::MemoryBuffer tmp(context); bool ok = tmp.RestApiPost("/instances", items[i].data_, items[i].size_, false); tmp.Clear(); @@ -220,5 +222,5 @@ SetSequenceTag(result, OrthancPlugins::DICOM_TAG_FAILED_SOP_SEQUENCE, failed); SetSequenceTag(result, OrthancPlugins::DICOM_TAG_REFERENCED_SOP_SEQUENCE, success); - OrthancPlugins::AnswerDicom(OrthancPlugins::Configuration::GetContext(), output, wadoBase, *dictionary_, result, isXml, false); + OrthancPlugins::AnswerDicom(context, output, wadoBase, *dictionary_, result, isXml, false); }
--- a/Plugin/WadoRsRetrieveFrames.cpp Fri Jun 24 21:59:32 2016 +0200 +++ b/Plugin/WadoRsRetrieveFrames.cpp Fri Jun 24 22:25:14 2016 +0200 @@ -295,7 +295,8 @@ const gdcm::DataElement& pixelData = dicom.GetDataSet().GetDataElement(OrthancPlugins::DICOM_TAG_PIXEL_DATA); const gdcm::SequenceOfFragments* fragments = pixelData.GetSequenceOfFragments(); - if (OrthancPluginStartMultipartAnswer(OrthancPlugins::Configuration::GetContext(), output, "related", GetMimeType(syntax)) != OrthancPluginErrorCode_Success) + if (OrthancPluginStartMultipartAnswer(OrthancPlugins::Configuration::GetContext(), + output, "related", GetMimeType(syntax)) != OrthancPluginErrorCode_Success) { return false; }
--- a/Plugin/WadoUri.cpp Fri Jun 24 21:59:32 2016 +0200 +++ b/Plugin/WadoUri.cpp Fri Jun 24 22:25:14 2016 +0200 @@ -25,16 +25,19 @@ #include <string> + static bool MapWadoToOrthancIdentifier(std::string& orthanc, char* (*func) (OrthancPluginContext*, const char*), const std::string& dicom) { - char* tmp = func(OrthancPlugins::Configuration::GetContext(), dicom.c_str()); + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + + char* tmp = func(context, dicom.c_str()); if (tmp) { orthanc = tmp; - OrthancPluginFreeString(OrthancPlugins::Configuration::GetContext(), tmp); + OrthancPluginFreeString(context, tmp); return true; } else @@ -149,12 +152,14 @@ static void AnswerDicom(OrthancPluginRestOutput* output, const std::string& instance) { + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + std::string uri = "/instances/" + instance + "/file"; - OrthancPlugins::MemoryBuffer dicom(OrthancPlugins::Configuration::GetContext()); + OrthancPlugins::MemoryBuffer dicom(context); if (dicom.RestApiGet(uri, false)) { - OrthancPluginAnswerBuffer(OrthancPlugins::Configuration::GetContext(), output, + OrthancPluginAnswerBuffer(context, output, dicom.GetData(), dicom.GetSize(), "application/dicom"); } else @@ -185,10 +190,12 @@ static void AnswerPngPreview(OrthancPluginRestOutput* output, const std::string& instance) { - OrthancPlugins::MemoryBuffer png(OrthancPlugins::Configuration::GetContext()); + OrthancPluginContext* context = OrthancPlugins::Configuration::GetContext(); + + OrthancPlugins::MemoryBuffer png(context); if (RetrievePngPreview(png, instance)) { - OrthancPluginAnswerBuffer(OrthancPlugins::Configuration::GetContext(), output, + OrthancPluginAnswerBuffer(context, output, png.GetData(), png.GetSize(), "image/png"); } else