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