diff OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 2726:46061a91c88a jobs

new metadata (RemoteIP, CalledAET, HttpUsername), "?expand" metadata
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 12 Jul 2018 18:01:16 +0200
parents b71c59312bae
children d4e81e0a8324
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi/OrthancRestResources.cpp	Thu Jul 12 16:07:56 2018 +0200
+++ b/OrthancServer/OrthancRestApi/OrthancRestResources.cpp	Thu Jul 12 18:01:16 2018 +0200
@@ -673,12 +673,33 @@
     std::list<MetadataType> metadata;
 
     OrthancRestApi::GetIndex(call).ListAvailableMetadata(metadata, publicId);
-    Json::Value result = Json::arrayValue;
+
+    Json::Value result;
 
-    for (std::list<MetadataType>::const_iterator 
-           it = metadata.begin(); it != metadata.end(); ++it)
+    if (call.HasArgument("expand"))
     {
-      result.append(EnumerationToString(*it));
+      result = Json::objectValue;
+      
+      for (std::list<MetadataType>::const_iterator 
+             it = metadata.begin(); it != metadata.end(); ++it)
+      {
+        std::string value;
+        if (OrthancRestApi::GetIndex(call).LookupMetadata(value, publicId, *it))
+        {
+          std::string key = EnumerationToString(*it);
+          result[key] = value;
+        }
+      }      
+    }
+    else
+    {
+      result = Json::arrayValue;
+      
+      for (std::list<MetadataType>::const_iterator 
+             it = metadata.begin(); it != metadata.end(); ++it)
+      {       
+        result.append(EnumerationToString(*it));
+      }
     }
 
     call.GetOutput().AnswerJson(result);