summaryrefslogtreecommitdiff
path: root/src/couchdb
diff options
context:
space:
mode:
authorJohn Christopher Anderson <jchris@apache.org>2009-03-04 04:45:10 +0000
committerJohn Christopher Anderson <jchris@apache.org>2009-03-04 04:45:10 +0000
commit29ae4670d62db80300483f2362143eb478cf2b56 (patch)
treea62d41f615bf45edd9b7a87233a11d6e715b4ca2 /src/couchdb
parente7eef7dc88643d29913a0b3d053e2e366017a621 (diff)
refactor show 404 handling doc-loading special case out of couch_httpd_db.erl
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@749902 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb')
-rw-r--r--src/couchdb/couch_httpd_db.erl17
-rw-r--r--src/couchdb/couch_httpd_show.erl6
2 files changed, 10 insertions, 13 deletions
diff --git a/src/couchdb/couch_httpd_db.erl b/src/couchdb/couch_httpd_db.erl
index 1bd853f3..524b52b4 100644
--- a/src/couchdb/couch_httpd_db.erl
+++ b/src/couchdb/couch_httpd_db.erl
@@ -13,7 +13,7 @@
-module(couch_httpd_db).
-include("couch_db.hrl").
--export([handle_request/1, db_req/2, couch_doc_open/4, couch_doc_open/5]).
+-export([handle_request/1, db_req/2, couch_doc_open/4]).
-import(couch_httpd,
[send_json/2,send_json/3,send_json/4,send_method_not_allowed/2,
@@ -538,27 +538,20 @@ db_doc_req(Req, _Db, _DocId) ->
% couch_doc_open(Db, DocId, [], []).
couch_doc_open(Db, DocId, Rev, Options) ->
- couch_doc_open(Db, DocId, Rev, Options, true).
-
-couch_doc_open(Db, DocId, Rev, Options, Throw) ->
case Rev of
"" -> % open most recent rev
case couch_db:open_doc(Db, DocId, Options) of
{ok, Doc} ->
Doc;
- Error when Throw ->
- throw(Error);
- _ ->
- nil
+ Error ->
+ throw(Error)
end;
_ -> % open a specific rev (deletions come back as stubs)
case couch_db:open_doc_revs(Db, DocId, [Rev], Options) of
{ok, [{ok, Doc}]} ->
Doc;
- {ok, [Else]} when Throw ->
- throw(Else);
- {ok, _} ->
- nil
+ {ok, [Else]} ->
+ throw(Else)
end
end.
diff --git a/src/couchdb/couch_httpd_show.erl b/src/couchdb/couch_httpd_show.erl
index 475f9ae2..398ed4c9 100644
--- a/src/couchdb/couch_httpd_show.erl
+++ b/src/couchdb/couch_httpd_show.erl
@@ -30,7 +30,11 @@ handle_doc_show_req(#httpd{
#doc{body={Props}} = couch_httpd_db:couch_doc_open(Db, DesignId, [], []),
Lang = proplists:get_value(<<"language">>, Props, <<"javascript">>),
ShowSrc = get_nested_json_value({Props}, [<<"shows">>, ShowName]),
- Doc = couch_httpd_db:couch_doc_open(Db, DocId, [], [], false),
+ Doc = try couch_httpd_db:couch_doc_open(Db, DocId, [], []) of
+ FoundDoc -> FoundDoc
+ catch
+ _ -> nil
+ end,
send_doc_show_response(Lang, ShowSrc, DocId, Doc, Req, Db);
handle_doc_show_req(#httpd{