summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lehnardt <jan@apache.org>2018-09-20 11:53:47 +0200
committerJan Lehnardt <jan@apache.org>2018-11-09 14:51:33 +0100
commit73b32713c33be7ddc2e64ab1fd1be0f472f6d3e2 (patch)
treee6841ffd71846f03c39ddc91527b568af2a3019a
parent0b88ebce3ba740314feb76231e0374539eb83383 (diff)
downloadcouchdb-73b32713c33be7ddc2e64ab1fd1be0f472f6d3e2.tar.gz
feat: move handler definition to .app file
-rw-r--r--src/couch/src/couch.app.src36
-rw-r--r--src/couch/src/couch_httpd.erl38
2 files changed, 39 insertions, 35 deletions
diff --git a/src/couch/src/couch.app.src b/src/couch/src/couch.app.src
index 6af213624..208938745 100644
--- a/src/couch/src/couch.app.src
+++ b/src/couch/src/couch.app.src
@@ -48,5 +48,41 @@
ioq,
couch_stats,
hyper
+ ]},
+ {env, [
+ { httpd_global_handlers, [
+ {"/", "{couch_httpd_misc_handlers, handle_welcome_req, <<\"Welcome\">>}"},
+ {"favicon.ico", "{couch_httpd_misc_handlers, handle_favicon_req, \"{{prefix}}/share/www\"}"},
+ {"_utils", "{couch_httpd_misc_handlers, handle_utils_dir_req, \"{{prefix}}/share/www\"}"},
+ {"_all_dbs", "{couch_httpd_misc_handlers, handle_all_dbs_req}"},
+ {"_active_tasks", "{couch_httpd_misc_handlers, handle_task_status_req}"},
+ {"_config", "{couch_httpd_misc_handlers, handle_config_req}"},
+ {"_replicate", "{couch_replicator_httpd, handle_req}"},
+ {"_uuids", "{couch_httpd_misc_handlers, handle_uuids_req}"},
+ {"_stats", "{couch_stats_httpd, handle_stats_req}"},
+ {"_session", "{couch_httpd_auth, handle_session_req}"},
+ {"_plugins", "{couch_plugins_httpd, handle_req}"},
+ {"_system", "{chttpd_misc, handle_system_req}"}
+ ]},
+ { httpd_db_handlers, [
+ {"_all_docs", "{couch_mrview_http, handle_all_docs_req}"},
+ {"_local_docs", "{couch_mrview_http, handle_local_docs_req}"},
+ {"_design_docs", "{couch_mrview_http, handle_design_docs_req}"},
+ {"_changes", "{couch_httpd_db, handle_db_changes_req}"},
+ {"_compact", "{couch_httpd_db, handle_compact_req}"},
+ {"_design", "{couch_httpd_db, handle_design_req}"},
+ {"_temp_view", "{couch_mrview_http, handle_temp_view_req}"},
+ {"_view_cleanup", "{couch_mrview_http, handle_cleanup_req}"}
+ ]},
+ { httpd_design_handlers, [
+ {"_compact", "{couch_mrview_http, handle_compact_req}"},
+ {"_info", "{couch_mrview_http, handle_info_req}"},
+ {"_list", "{couch_mrview_show, handle_view_list_req}"},
+ {"_rewrite", "{couch_httpd_rewrite, handle_rewrite_req}"},
+ {"_show", "{couch_mrview_show, handle_doc_show_req}"},
+ {"_update", "{couch_mrview_show, handle_doc_update_req}"},
+ {"_view", "{couch_mrview_http, handle_view_req}"},
+ {"_view_changes", "{couch_mrview_http, handle_view_changes_req}"}
+ ]}
]}
]}.
diff --git a/src/couch/src/couch_httpd.erl b/src/couch/src/couch_httpd.erl
index 3177e0673..861fd58c4 100644
--- a/src/couch/src/couch_httpd.erl
+++ b/src/couch/src/couch_httpd.erl
@@ -106,53 +106,21 @@ start_link(Name, Options) ->
ok = validate_bind_address(BindAddress),
DefaultFun = make_arity_1_fun("{couch_httpd_db, handle_request}"),
-
- HttpdGlobalHandlers = [
- {"/", "{couch_httpd_misc_handlers, handle_welcome_req, <<\"Welcome\">>}"},
- {"favicon.ico", "{couch_httpd_misc_handlers, handle_favicon_req, \"{{prefix}}/share/www\"}"},
- {"_utils", "{couch_httpd_misc_handlers, handle_utils_dir_req, \"{{prefix}}/share/www\"}"},
- {"_all_dbs", "{couch_httpd_misc_handlers, handle_all_dbs_req}"},
- {"_active_tasks", "{couch_httpd_misc_handlers, handle_task_status_req}"},
- {"_config", "{couch_httpd_misc_handlers, handle_config_req}"},
- {"_replicate", "{couch_replicator_httpd, handle_req}"},
- {"_uuids", "{couch_httpd_misc_handlers, handle_uuids_req}"},
- {"_stats", "{couch_stats_httpd, handle_stats_req}"},
- {"_session", "{couch_httpd_auth, handle_session_req}"},
- {"_plugins", "{couch_plugins_httpd, handle_req}"},
- {"_system", "{chttpd_misc, handle_system_req}"}
- ],
+ {ok, HttpdGlobalHandlers} = application:get_env(httpd_global_handlers),
UrlHandlersList = lists:map(
fun({UrlKey, SpecStr}) ->
{?l2b(UrlKey), make_arity_1_fun(SpecStr)}
end, HttpdGlobalHandlers),
- HttpdDbHandlers = [
- {"_all_docs", "{couch_mrview_http, handle_all_docs_req}"},
- {"_local_docs", "{couch_mrview_http, handle_local_docs_req}"},
- {"_design_docs", "{couch_mrview_http, handle_design_docs_req}"},
- {"_changes", "{couch_httpd_db, handle_db_changes_req}"},
- {"_compact", "{couch_httpd_db, handle_compact_req}"},
- {"_design", "{couch_httpd_db, handle_design_req}"},
- {"_temp_view", "{couch_mrview_http, handle_temp_view_req}"},
- {"_view_cleanup", "{couch_mrview_http, handle_cleanup_req}"}
- ],
+ {ok, HttpdDbHandlers} = application:get_env(httpd_db_handlers),
DbUrlHandlersList = lists:map(
fun({UrlKey, SpecStr}) ->
{?l2b(UrlKey), make_arity_2_fun(SpecStr)}
end, HttpdDbHandlers),
- HttpdDesignHandlers = [
- {"_compact", "{couch_mrview_http, handle_compact_req}"},
- {"_info", "{couch_mrview_http, handle_info_req}"},
- {"_list", "{couch_mrview_show, handle_view_list_req}"},
- {"_rewrite", "{couch_httpd_rewrite, handle_rewrite_req}"},
- {"_show", "{couch_mrview_show, handle_doc_show_req}"},
- {"_update", "{couch_mrview_show, handle_doc_update_req}"},
- {"_view", "{couch_mrview_http, handle_view_req}"},
- {"_view_changes", "{couch_mrview_http, handle_view_changes_req}"}
- ],
+ {ok, HttpdDesignHandlers} = application:get_env(httpd_design_handlers),
DesignUrlHandlersList = lists:map(
fun({UrlKey, SpecStr}) ->