% 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,
        exxhash,
        config,
        b64url,
        couch_log,
        couch_event,
        ioq,
        couch_stats,
        hyper,
        couch_dist
    ]},
    {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}"}
        ]},
        {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}"}
        ]}
    ]}
]}.
