diff OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 2304:563bf878407a

Argument "Since" in URI "/tools/find" (related to issue #53)
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 11 Jul 2017 17:24:31 +0200
parents e002430baa41
children 7284093111b0
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi/OrthancRestResources.cpp	Mon Jul 10 11:31:48 2017 +0200
+++ b/OrthancServer/OrthancRestApi/OrthancRestResources.cpp	Tue Jul 11 17:24:31 2017 +0200
@@ -1154,7 +1154,8 @@
         request["Level"].type() == Json::stringValue &&
         request["Query"].type() == Json::objectValue &&
         (!request.isMember("CaseSensitive") || request["CaseSensitive"].type() == Json::booleanValue) &&
-        (!request.isMember("Limit") || request["Limit"].type() == Json::intValue))
+        (!request.isMember("Limit") || request["Limit"].type() == Json::intValue) &&
+        (!request.isMember("Since") || request["Since"].type() == Json::intValue))
     {
       bool expand = false;
       if (request.isMember("Expand"))
@@ -1180,6 +1181,18 @@
         limit = static_cast<size_t>(tmp);
       }
 
+      size_t since = 0;
+      if (request.isMember("Since"))
+      {
+        int tmp = request["Since"].asInt();
+        if (tmp < 0)
+        {
+          throw OrthancException(ErrorCode_ParameterOutOfRange);
+        }
+
+        since = static_cast<size_t>(tmp);
+      }
+
       std::string level = request["Level"].asString();
 
       LookupResource query(StringToResourceType(level.c_str()));
@@ -1198,8 +1211,9 @@
       }
       
       std::list<std::string> resources;
-      context.Apply(resources, query, limit);
-      AnswerListOfResources(call.GetOutput(), context.GetIndex(), resources, query.GetLevel(), expand);
+      context.Apply(resources, query, since, limit);
+      AnswerListOfResources(call.GetOutput(), context.GetIndex(),
+                            resources, query.GetLevel(), expand);
     }
     else
     {