comparison 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
comparison
equal deleted inserted replaced
2303:692527245856 2304:563bf878407a
1152 request.isMember("Level") && 1152 request.isMember("Level") &&
1153 request.isMember("Query") && 1153 request.isMember("Query") &&
1154 request["Level"].type() == Json::stringValue && 1154 request["Level"].type() == Json::stringValue &&
1155 request["Query"].type() == Json::objectValue && 1155 request["Query"].type() == Json::objectValue &&
1156 (!request.isMember("CaseSensitive") || request["CaseSensitive"].type() == Json::booleanValue) && 1156 (!request.isMember("CaseSensitive") || request["CaseSensitive"].type() == Json::booleanValue) &&
1157 (!request.isMember("Limit") || request["Limit"].type() == Json::intValue)) 1157 (!request.isMember("Limit") || request["Limit"].type() == Json::intValue) &&
1158 (!request.isMember("Since") || request["Since"].type() == Json::intValue))
1158 { 1159 {
1159 bool expand = false; 1160 bool expand = false;
1160 if (request.isMember("Expand")) 1161 if (request.isMember("Expand"))
1161 { 1162 {
1162 expand = request["Expand"].asBool(); 1163 expand = request["Expand"].asBool();
1178 } 1179 }
1179 1180
1180 limit = static_cast<size_t>(tmp); 1181 limit = static_cast<size_t>(tmp);
1181 } 1182 }
1182 1183
1184 size_t since = 0;
1185 if (request.isMember("Since"))
1186 {
1187 int tmp = request["Since"].asInt();
1188 if (tmp < 0)
1189 {
1190 throw OrthancException(ErrorCode_ParameterOutOfRange);
1191 }
1192
1193 since = static_cast<size_t>(tmp);
1194 }
1195
1183 std::string level = request["Level"].asString(); 1196 std::string level = request["Level"].asString();
1184 1197
1185 LookupResource query(StringToResourceType(level.c_str())); 1198 LookupResource query(StringToResourceType(level.c_str()));
1186 1199
1187 Json::Value::Members members = request["Query"].getMemberNames(); 1200 Json::Value::Members members = request["Query"].getMemberNames();
1196 request["Query"][members[i]].asString(), 1209 request["Query"][members[i]].asString(),
1197 caseSensitive); 1210 caseSensitive);
1198 } 1211 }
1199 1212
1200 std::list<std::string> resources; 1213 std::list<std::string> resources;
1201 context.Apply(resources, query, limit); 1214 context.Apply(resources, query, since, limit);
1202 AnswerListOfResources(call.GetOutput(), context.GetIndex(), resources, query.GetLevel(), expand); 1215 AnswerListOfResources(call.GetOutput(), context.GetIndex(),
1216 resources, query.GetLevel(), expand);
1203 } 1217 }
1204 else 1218 else
1205 { 1219 {
1206 throw OrthancException(ErrorCode_BadRequest); 1220 throw OrthancException(ErrorCode_BadRequest);
1207 } 1221 }