diff --git a/descriptors/json_descriptor.hpp b/descriptors/json_descriptor.hpp index 057c4caf8..16daac66e 100644 --- a/descriptors/json_descriptor.hpp +++ b/descriptors/json_descriptor.hpp @@ -105,7 +105,6 @@ template class JSONDescriptor final : public BaseDescriptor< // We do not need to do much, if there is no route ;-) json_result.values["status"] = 207; json_result.values["status_message"] = "Cannot find route between points"; - // osrm::json::render(reply.content, json_result); return; } diff --git a/plugins/match.hpp b/plugins/match.hpp index 40394ffc8..85dd33e84 100644 --- a/plugins/match.hpp +++ b/plugins/match.hpp @@ -273,7 +273,8 @@ template class MapMatchingPlugin : public BasePlugin // check number of parameters if (!check_all_coordinates(route_parameters.coordinates)) { - json_result.values["status"] = "Invalid coordinates."; + json_result.values["status"] = 400; + json_result.values["status_message"] = "Invalid coordinates."; return 400; } @@ -284,13 +285,15 @@ template class MapMatchingPlugin : public BasePlugin const auto &input_bearings = route_parameters.bearings; if (input_timestamps.size() > 0 && input_coords.size() != input_timestamps.size()) { - json_result.values["status"] = "Number of timestamps does not match number of coordinates ."; + json_result.values["status"] = 400; + json_result.values["status_message"] = "Number of timestamps does not match number of coordinates."; return 400; } if (input_bearings.size() > 0 && input_coords.size() != input_bearings.size()) { - json_result.values["status"] = "Number of bearings does not match number of coordinates ."; + json_result.values["status"] = 400; + json_result.values["status_message"] = "Number of bearings does not match number of coordinates."; return 400; } @@ -298,14 +301,16 @@ template class MapMatchingPlugin : public BasePlugin if (max_locations_map_matching > 0 && static_cast(input_coords.size()) < max_locations_map_matching) { - json_result.values["status"] = "Too many coodindates."; + json_result.values["status"] = 400; + json_result.values["status_message"] = "Too many coodindates."; return 400; } // enforce maximum number of locations for performance reasons if (static_cast(input_coords.size()) < 2) { - json_result.values["status"] = "At least two coordinates needed."; + json_result.values["status"] = 400; + json_result.values["status_message"] = "At least two coordinates needed."; return 400; } @@ -313,7 +318,8 @@ template class MapMatchingPlugin : public BasePlugin getCandidates(input_coords, input_bearings, route_parameters.gps_precision, sub_trace_lengths, candidates_lists); if (!found_candidates) { - json_result.values["status"] = "No suitable matching candidates found."; + json_result.values["status"] = 400; + json_result.values["status_message"] = "No suitable matching candidates found."; return 400; } @@ -327,12 +333,6 @@ template class MapMatchingPlugin : public BasePlugin route_parameters.matching_beta, route_parameters.gps_precision, sub_matchings); - if (sub_matchings.empty()) - { - json_result.values["status"] = "No matchings found."; - return 400; - } - osrm::json::Array matchings; for (auto &sub : sub_matchings) { @@ -379,6 +379,17 @@ template class MapMatchingPlugin : public BasePlugin osrm::json::Logger::get()->render("matching", json_result); json_result.values["matchings"] = matchings; + if (sub_matchings.empty()) + { + json_result.values["status"] = 0; + json_result.values["status_message"] = "Found matchings."; + } + else + { + json_result.values["status"] = 207; + json_result.values["status_message"] = "Cannot find matchings."; + } + return 200; }