Skip to content

Commit

Permalink
Fix: API queries on non-existant objects cause exception
Browse files Browse the repository at this point in the history
fixes #11088
  • Loading branch information
Michael Friedrich committed Feb 4, 2016
1 parent 611ff86 commit 3227186
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 7 deletions.
4 changes: 2 additions & 2 deletions lib/remote/actionshandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ bool ActionsHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& reques
try {
objs = FilterUtility::GetFilterTargets(qd, params, user);
} catch (const std::exception& ex) {
HttpUtility::SendJsonError(response, 400,
"Type/Filter was required but not provided or was invalid.",
HttpUtility::SendJsonError(response, 404,
"No objects found.",
HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
return true;
}
Expand Down
11 changes: 10 additions & 1 deletion lib/remote/deleteobjecthandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,16 @@ bool DeleteObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r
params->Set(attr, request.RequestUrl->GetPath()[3]);
}

std::vector<Value> objs = FilterUtility::GetFilterTargets(qd, params, user);
std::vector<Value> objs;

try {
objs = FilterUtility::GetFilterTargets(qd, params, user);
} catch (const std::exception& ex) {
HttpUtility::SendJsonError(response, 404,
"No objects found.",
HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
return true;
}

bool cascade = HttpUtility::GetLastParameter(params, "cascade");

Expand Down
11 changes: 10 additions & 1 deletion lib/remote/modifyobjecthandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,16 @@ bool ModifyObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r
params->Set(attr, request.RequestUrl->GetPath()[3]);
}

std::vector<Value> objs = FilterUtility::GetFilterTargets(qd, params, user);
std::vector<Value> objs;

try {
objs = FilterUtility::GetFilterTargets(qd, params, user);
} catch (const std::exception& ex) {
HttpUtility::SendJsonError(response, 404,
"No objects found.",
HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
return true;
}

Dictionary::Ptr attrs = params->Get("attrs");

Expand Down
11 changes: 10 additions & 1 deletion lib/remote/objectqueryhandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,16 @@ bool ObjectQueryHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& re
params->Set(attr, request.RequestUrl->GetPath()[3]);
}

std::vector<Value> objs = FilterUtility::GetFilterTargets(qd, params, user);
std::vector<Value> objs;

try {
objs = FilterUtility::GetFilterTargets(qd, params, user);
} catch (const std::exception& ex) {
HttpUtility::SendJsonError(response, 404,
"No objects found.",
HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
return true;
}

Array::Ptr results = new Array();
results->Reserve(objs.size());
Expand Down
11 changes: 10 additions & 1 deletion lib/remote/statushandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,16 @@ bool StatusHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& request
if (request.RequestUrl->GetPath().size() >= 3)
params->Set("status", request.RequestUrl->GetPath()[2]);

std::vector<Value> objs = FilterUtility::GetFilterTargets(qd, params, user);
std::vector<Value> objs;

try {
objs = FilterUtility::GetFilterTargets(qd, params, user);
} catch (const std::exception& ex) {
HttpUtility::SendJsonError(response, 404,
"No objects found.",
HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
return true;
}

Array::Ptr results = Array::FromVector(objs);

Expand Down
11 changes: 10 additions & 1 deletion lib/remote/typequeryhandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,16 @@ bool TypeQueryHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& requ
if (request.RequestUrl->GetPath().size() >= 3)
params->Set("name", request.RequestUrl->GetPath()[2]);

std::vector<Value> objs = FilterUtility::GetFilterTargets(qd, params, user);
std::vector<Value> objs;

try {
objs = FilterUtility::GetFilterTargets(qd, params, user);
} catch (const std::exception& ex) {
HttpUtility::SendJsonError(response, 404,
"No objects found.",
HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
return true;
}

Array::Ptr results = new Array();

Expand Down

0 comments on commit 3227186

Please sign in to comment.