diff Plugin/DefaultAuthorizationParser.cpp @ 138:f448e8626f1a

Now handling new GET /tools/create-archive and sibling routes
author Alain Mazy <am@osimis.io>
date Sat, 25 Nov 2023 12:18:14 +0100
parents 0205e9efaca8
children 20c638fa8b07
line wrap: on
line diff
--- a/Plugin/DefaultAuthorizationParser.cpp	Fri Nov 24 15:37:52 2023 +0100
+++ b/Plugin/DefaultAuthorizationParser.cpp	Sat Nov 25 12:18:14 2023 +0100
@@ -33,7 +33,8 @@
     osimisViewerSeries_("^/osimis-viewer/series/([a-f0-9-]+)(|/.*)$"),
     osimisViewerImages_("^/osimis-viewer/(images|custom-command)/([a-f0-9-]+)(|/.*)$"),
     osimisViewerStudies_("^/osimis-viewer/studies/([a-f0-9-]+)(|/.*)$"),
-    listOfResourcesPattern_("^/(patients|studies|series|instances)(|/)$")
+    listOfResourcesPattern_("^/(patients|studies|series|instances)(|/)$"),
+    createBulkPattern_("^/tools/(create-archive|create-media|create-media-extended)(|/)$")
   {
     std::string tmp = dicomWebRoot;
     while (!tmp.empty() &&
@@ -145,6 +146,19 @@
       AddOrthancInstance(target, what[2]);
       return true;
     }
+    else if (boost::regex_match(uri, what, createBulkPattern_))
+    {
+      std::string resourcesIdsString = Orthanc::HttpToolbox::GetArgument(getArguments, "resources", "");
+      std::set<std::string> resourcesIds;
+      Orthanc::Toolbox::SplitString(resourcesIds, resourcesIdsString, ',');
+
+      for (std::set<std::string>::const_iterator it = resourcesIds.begin(); it != resourcesIds.end(); ++it)
+      {
+        AddOrthancUnknownResource(target, *it);
+      }
+      
+      return true;
+    }
     else if (boost::regex_match(uri, what, dicomWebQidoRsFind_))
     {
       std::string studyInstanceUid, seriesInstanceUid, sopInstanceUid, patientId;