Use dynamic handlers
We use dynamic handlers for mango related calls which are:
- `_index`
- `_explain`
- `_find`
diff --git a/src/mango.app.src b/src/mango.app.src
index e1d566d..a63f036 100644
--- a/src/mango.app.src
+++ b/src/mango.app.src
@@ -17,6 +17,7 @@
{applications, [
kernel,
stdlib,
+ couch_epi,
config,
couch_log,
fabric
diff --git a/src/mango_httpd_handlers.erl b/src/mango_httpd_handlers.erl
new file mode 100644
index 0000000..80e5e27
--- /dev/null
+++ b/src/mango_httpd_handlers.erl
@@ -0,0 +1,24 @@
+% Licensed under the Apache License, Version 2.0 (the "License"); you may not
+% use this file except in compliance with the License. You may obtain a copy of
+% the License at
+%
+% http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+% License for the specific language governing permissions and limitations under
+% the License.
+
+-module(mango_httpd_handlers).
+
+-export([url_handler/1, db_handler/1, design_handler/1]).
+
+url_handler(_) -> no_match.
+
+db_handler(<<"_index">>) -> fun mango_httpd:handle_req/2;
+db_handler(<<"_explain">>) -> fun mango_httpd:handle_req/2;
+db_handler(<<"_find">>) -> fun mango_httpd:handle_req/2;
+db_handler(_) -> no_match.
+
+design_handler(_) -> no_match.
diff --git a/src/mango_sup.erl b/src/mango_sup.erl
index f9d0e22..7f4cd10 100644
--- a/src/mango_sup.erl
+++ b/src/mango_sup.erl
@@ -22,4 +22,5 @@
init([]) ->
{ok, {{one_for_one, 3, 10}, [
+ chttpd_handlers:provider(mango, mango_httpd_handlers)
]}}.