% 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.

{application, couch, [
    {description, "Apache CouchDB"},
    {vsn, git},
    {registered, [
        couch_db_update,
        couch_db_update_notifier_sup,
        couch_httpd,
        couch_primary_services,
        couch_proc_manager,
        couch_secondary_services,
        couch_server,
        couch_sup,
        couch_task_status
    ]},
    {mod, {couch_app, []}},
    {applications, [
        % stdlib
        kernel,
        stdlib,
        crypto,
        sasl,
        inets,
        ssl,
        os_mon,

        % Upstream deps
        ibrowse,
        mochiweb,

        % ASF deps
        couch_epi,
        b64url,
        couch_log,
        couch_event,
        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}"}
        ]}
    ]}
]}.
