You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ch...@apache.org on 2015/06/02 21:31:08 UTC

[18/41] chttpd commit: updated refs/heads/2080-port-cors to e2c2bd7

Enable POST requests to /_changes in clustered CouchDB

Appropriate handling of a POST to _changes is already in place in
single node CouchDB. In clustered CouchDB, allow POST requests to pass
through to the underlying handler and existing logic will do the rest.

This closes #22

COUCHDB-2530

Signed-off-by: Alexander Shorin <kx...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/couchdb-chttpd/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-chttpd/commit/6bfa947f
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-chttpd/tree/6bfa947f
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-chttpd/diff/6bfa947f

Branch: refs/heads/2080-port-cors
Commit: 6bfa947ffd9ec083c66b103d06e0f91a58eb8ba3
Parents: 7189115
Author: Will Holley <wi...@gmail.com>
Authored: Sat Jan 31 10:46:30 2015 +0000
Committer: Alexander Shorin <kx...@apache.org>
Committed: Sat Jan 31 23:56:38 2015 +0300

----------------------------------------------------------------------
 src/chttpd_db.erl | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-chttpd/blob/6bfa947f/src/chttpd_db.erl
----------------------------------------------------------------------
diff --git a/src/chttpd_db.erl b/src/chttpd_db.erl
index f88131a..1d749cb 100644
--- a/src/chttpd_db.erl
+++ b/src/chttpd_db.erl
@@ -61,7 +61,15 @@ handle_request(#httpd{path_parts=[DbName|RestParts],method=Method,
         do_db_req(Req, Handler)
     end.
 
+handle_changes_req(#httpd{method='POST'}=Req, Db) ->
+    couch_httpd:validate_ctype(Req, "application/json"),
+    handle_changes_req1(Req, Db);
 handle_changes_req(#httpd{method='GET'}=Req, Db) ->
+    handle_changes_req1(Req, Db);
+handle_changes_req(#httpd{path_parts=[_,<<"_changes">>]}=Req, _Db) ->
+    send_method_not_allowed(Req, "GET,POST,HEAD").
+
+handle_changes_req1(#httpd{}=Req, Db) ->
     #changes_args{filter=Raw, style=Style} = Args0 = parse_changes_query(Req),
     ChangesArgs = Args0#changes_args{
         filter_fun = couch_changes:configure_filter(Raw, Style, Req, Db)
@@ -87,9 +95,7 @@ handle_changes_req(#httpd{method='GET'}=Req, Db) ->
     _ ->
         Msg = <<"Supported `feed` types: normal, continuous, longpoll, eventsource">>,
         throw({bad_request, Msg})
-    end;
-handle_changes_req(#httpd{path_parts=[_,<<"_changes">>]}=Req, _Db) ->
-    send_method_not_allowed(Req, "GET,HEAD").
+    end.
 
 % callbacks for continuous feed (newline-delimited JSON Objects)
 changes_callback(start, {"continuous", Req}) ->