diff options
Diffstat (limited to 'lib/chef_zero/endpoints/search_endpoint.rb')
-rw-r--r-- | lib/chef_zero/endpoints/search_endpoint.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/chef_zero/endpoints/search_endpoint.rb b/lib/chef_zero/endpoints/search_endpoint.rb index 3a093be..9240d5c 100644 --- a/lib/chef_zero/endpoints/search_endpoint.rb +++ b/lib/chef_zero/endpoints/search_endpoint.rb @@ -13,6 +13,8 @@ module ChefZero results = search(request) results['rows'] = results['rows'].map { |name,uri,value,search_value| value } json_response(200, results) + rescue ChefZero::Solr::ParseError + bad_search_request(request) end def post(request) @@ -41,10 +43,18 @@ module ChefZero 'start' => full_results['start'], 'total' => full_results['total'] }) + rescue ChefZero::Solr::ParseError + bad_search_request(request) end private + def bad_search_request(request) + query_string = request.query_params['q'] + resp = {"error" => ["invalid search query: '#{query_string}'"]} + json_response(400, resp) + end + def search_container(request, index) relative_parts, normalize_proc = case index when 'client' |