diff options
author | Benoit Chesneau <benoitc@apache.org> | 2010-02-03 16:30:08 +0000 |
---|---|---|
committer | Benoit Chesneau <benoitc@apache.org> | 2010-02-03 16:30:08 +0000 |
commit | 7a1efddfb663068d8ee59ee8f6c655777d4aa662 (patch) | |
tree | 6ce4386392620758056a7ab8784dc345556cda2c /src/couchdb | |
parent | fbff9958357d1f9a39b4e811369250351546a1df (diff) |
add default_fun and url_handlers to #http. It's useful for any custom
handler that need to use the
http_handler and not only the db and design http handlers. Like for
example in the rewriter.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@906111 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb')
-rw-r--r-- | src/couchdb/couch_db.hrl | 4 | ||||
-rw-r--r-- | src/couchdb/couch_httpd.erl | 4 | ||||
-rw-r--r-- | src/couchdb/couch_httpd_rewrite.erl | 19 |
3 files changed, 13 insertions, 14 deletions
diff --git a/src/couchdb/couch_db.hrl b/src/couchdb/couch_db.hrl index 47e8f9eb..f74bade7 100644 --- a/src/couchdb/couch_db.hrl +++ b/src/couchdb/couch_db.hrl @@ -73,7 +73,9 @@ user_ctx, req_body = undefined, design_url_handlers, - auth + auth, + default_fun, + url_handlers }). diff --git a/src/couchdb/couch_httpd.erl b/src/couchdb/couch_httpd.erl index 6d0230f9..62616007 100644 --- a/src/couchdb/couch_httpd.erl +++ b/src/couchdb/couch_httpd.erl @@ -175,7 +175,9 @@ handle_request(MochiReq, DefaultFun, path_parts = [list_to_binary(couch_httpd:unquote(Part)) || Part <- string:tokens(Path, "/")], db_url_handlers = DbUrlHandlers, - design_url_handlers = DesignUrlHandlers + design_url_handlers = DesignUrlHandlers, + default_fun = DefaultFun, + url_handlers = UrlHandlers }, HandlerFun = couch_util:dict_find(HandlerKey, UrlHandlers, DefaultFun), diff --git a/src/couchdb/couch_httpd_rewrite.erl b/src/couchdb/couch_httpd_rewrite.erl index eabe98df..72ec9545 100644 --- a/src/couchdb/couch_httpd_rewrite.erl +++ b/src/couchdb/couch_httpd_rewrite.erl @@ -172,20 +172,15 @@ handle_rewrite_req(#httpd{ % cleanup, It force mochiweb to reparse raw uri. MochiReq1:cleanup(), - DefaultSpec = "{couch_httpd_db, handle_request}", - DefaultFun = couch_httpd:make_arity_1_fun( - couch_config:get("httpd", "default_handler", DefaultSpec) - ), - - UrlHandlersList = lists:map( - fun({UrlKey, SpecStr}) -> - {?l2b(UrlKey), couch_httpd:make_arity_1_fun(SpecStr)} - end, couch_config:get("httpd_global_handlers")), - UrlHandlers = dict:from_list(UrlHandlersList), + #httpd{ + db_url_handlers = DbUrlHandlers, + design_url_handlers = DesignUrlHandlers, + default_fun = DefaultFun, + url_handlers = UrlHandlers + } = Req, couch_httpd:handle_request(MochiReq1, DefaultFun, - UrlHandlers, Req#httpd.db_url_handlers, - Req#httpd.design_url_handlers) + UrlHandlers, DbUrlHandlers, DesignUrlHandlers) end. |