Mercurial > hg > orthanc
comparison OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 1758:318c2e83c2bd db-changes
fix
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 28 Oct 2015 12:53:45 +0100 |
parents | 4941494b5dd8 |
children | e268412adcf1 |
comparison
equal
deleted
inserted
replaced
1757:98abb8d7f905 | 1758:318c2e83c2bd |
---|---|
942 request.type() == Json::objectValue && | 942 request.type() == Json::objectValue && |
943 request.isMember("Level") && | 943 request.isMember("Level") && |
944 request.isMember("Query") && | 944 request.isMember("Query") && |
945 request["Level"].type() == Json::stringValue && | 945 request["Level"].type() == Json::stringValue && |
946 request["Query"].type() == Json::objectValue && | 946 request["Query"].type() == Json::objectValue && |
947 (!request.isMember("CaseSensitive") || request["CaseSensitive"].type() == Json::booleanValue)) | 947 (!request.isMember("CaseSensitive") || request["CaseSensitive"].type() == Json::booleanValue) && |
948 (!request.isMember("Limit") || request["Limit"].type() == Json::intValue)) | |
948 { | 949 { |
949 bool expand = false; | 950 bool expand = false; |
950 if (request.isMember("Expand")) | 951 if (request.isMember("Expand")) |
951 { | 952 { |
952 expand = request["Expand"].asBool(); | 953 expand = request["Expand"].asBool(); |
956 if (request.isMember("CaseSensitive")) | 957 if (request.isMember("CaseSensitive")) |
957 { | 958 { |
958 caseSensitive = request["CaseSensitive"].asBool(); | 959 caseSensitive = request["CaseSensitive"].asBool(); |
959 } | 960 } |
960 | 961 |
962 size_t limit = 0; | |
963 if (request.isMember("Limit")) | |
964 { | |
965 limit = request["CaseSensitive"].asInt(); | |
966 if (limit < 0) | |
967 { | |
968 throw OrthancException(ErrorCode_ParameterOutOfRange); | |
969 } | |
970 } | |
971 | |
961 std::string level = request["Level"].asString(); | 972 std::string level = request["Level"].asString(); |
962 | 973 |
963 DicomFindQuery query; | 974 LookupResource query(StringToResourceType(level.c_str())); |
964 query.SetLevel(StringToResourceType(level.c_str())); | |
965 | 975 |
966 Json::Value::Members members = request["Query"].getMemberNames(); | 976 Json::Value::Members members = request["Query"].getMemberNames(); |
967 for (size_t i = 0; i < members.size(); i++) | 977 for (size_t i = 0; i < members.size(); i++) |
968 { | 978 { |
969 if (request["Query"][members[i]].type() != Json::stringValue) | 979 if (request["Query"][members[i]].type() != Json::stringValue) |
970 { | 980 { |
971 throw OrthancException(ErrorCode_BadRequest); | 981 throw OrthancException(ErrorCode_BadRequest); |
972 } | 982 } |
973 | 983 |
974 query.SetConstraint(FromDcmtkBridge::ParseTag(members[i]), | 984 query.AddDicomConstraint(FromDcmtkBridge::ParseTag(members[i]), |
975 request["Query"][members[i]].asString(), | 985 request["Query"][members[i]].asString(), |
976 caseSensitive); | 986 caseSensitive); |
977 } | 987 } |
978 | 988 |
979 std::list<std::string> resources; | 989 std::list<std::string> resources; |
980 ResourceFinder finder(context); | 990 context.Apply(resources, query, limit); |
981 finder.Apply(resources, query); | |
982 AnswerListOfResources(call.GetOutput(), context.GetIndex(), resources, query.GetLevel(), expand); | 991 AnswerListOfResources(call.GetOutput(), context.GetIndex(), resources, query.GetLevel(), expand); |
983 } | 992 } |
984 else | 993 else |
985 { | 994 { |
986 throw OrthancException(ErrorCode_BadRequest); | 995 throw OrthancException(ErrorCode_BadRequest); |