diff OrthancServer/OrthancRestApi.cpp @ 438:7bbe77cb9e12

DELETE metadata
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 15 May 2013 16:51:10 +0200
parents beca6747945e
children 23e5b35e3c5c
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi.cpp	Wed May 15 16:43:30 2013 +0200
+++ b/OrthancServer/OrthancRestApi.cpp	Wed May 15 16:51:10 2013 +0200
@@ -1536,6 +1536,24 @@
   }
 
 
+  static void DeleteMetadata(RestApi::DeleteCall& call)
+  {
+    RETRIEVE_CONTEXT(call);
+    
+    std::string publicId = call.GetUriComponent("id", "");
+    std::string name = call.GetUriComponent("name", "");
+    MetadataType metadata = StringToMetadata(name);
+
+    if (metadata >= MetadataType_StartUser &&
+        metadata <= MetadataType_EndUser)
+    {
+      // It is forbidden to modify internal metadata
+      context.GetIndex().DeleteMetadata(publicId, metadata);
+      call.GetOutput().AnswerBuffer("", "text/plain");
+    }
+  }
+
+
   static void SetMetadata(RestApi::PutCall& call)
   {
     RETRIEVE_CONTEXT(call);
@@ -1591,15 +1609,19 @@
     Register("/series/{id}/archive", GetArchive<ResourceType_Series>);
 
     Register("/instances/{id}/metadata", ListMetadata);
+    Register("/instances/{id}/metadata/{name}", DeleteMetadata);
     Register("/instances/{id}/metadata/{name}", GetMetadata);
     Register("/instances/{id}/metadata/{name}", SetMetadata);
     Register("/patients/{id}/metadata", ListMetadata);
+    Register("/patients/{id}/metadata/{name}", DeleteMetadata);
     Register("/patients/{id}/metadata/{name}", GetMetadata);
     Register("/patients/{id}/metadata/{name}", SetMetadata);
     Register("/series/{id}/metadata", ListMetadata);
+    Register("/series/{id}/metadata/{name}", DeleteMetadata);
     Register("/series/{id}/metadata/{name}", GetMetadata);
     Register("/series/{id}/metadata/{name}", SetMetadata);
     Register("/studies/{id}/metadata", ListMetadata);
+    Register("/studies/{id}/metadata/{name}", DeleteMetadata);
     Register("/studies/{id}/metadata/{name}", GetMetadata);
     Register("/studies/{id}/metadata/{name}", SetMetadata);