From daa9d65a53dedaac5aeeb6394d4c0b6f99fa930c Mon Sep 17 00:00:00 2001 From: Paul Joseph Davis Date: Sat, 18 Apr 2009 18:34:31 +0000 Subject: Resolves COUCHDB-306 - Wacky error responses to malformed documents Mostly adds improvements to the parsing of Json bodies for _bulk_docs and multi-get queries. Includes tests in basics.js and view_errors.js. git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@766373 13f79535-47bb-0310-9956-ffa450edef68 --- src/couchdb/couch_httpd_view.erl | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/couchdb/couch_httpd_view.erl') diff --git a/src/couchdb/couch_httpd_view.erl b/src/couchdb/couch_httpd_view.erl index 4054eb05..0348cf8b 100644 --- a/src/couchdb/couch_httpd_view.erl +++ b/src/couchdb/couch_httpd_view.erl @@ -56,9 +56,21 @@ handle_view_req(#httpd{method='GET', handle_view_req(#httpd{method='POST', path_parts=[_Db, _Design, DName, _View, ViewName]}=Req, Db) -> - {Props} = couch_httpd:json_body(Req), - Keys = proplists:get_value(<<"keys">>, Props, nil), - design_doc_view(Req, Db, DName, ViewName, Keys); + case couch_httpd:json_body(Req) of + {Fields} -> + case proplists:get_value(<<"keys">>, Fields, nil) of + nil -> + Fmt = "POST to view ~p/~p in database ~p with no keys member.", + ?LOG_DEBUG(Fmt, [DName, ViewName, Db]), + design_doc_view(Req, Db, DName, ViewName, nil); + Keys when is_list(Keys) -> + design_doc_view(Req, Db, DName, ViewName, Keys); + _ -> + throw({bad_request, "`keys` member must be a array."}) + end; + _ -> + throw({bad_request, "Body must be a JSON object"}) + end; handle_view_req(Req, _Db) -> send_method_not_allowed(Req, "GET,POST,HEAD"). -- cgit v1.2.3