import logging
import os

from cheroot import wsgi
from wsgidav.wsgidav_app import WsgiDAVApp

logging.basicConfig(level=logging.DEBUG,
                    format='%(name)s %(levelname)s %(asctime)s %(message)s')
_logger = logging.getLogger(__name__)
_logger.propagate = True

# configure the "wsgidav" named logger
tmp_logger = logging.getLogger("wsgidav")
tmp_logger.propagate = True
tmp_logger.setLevel(logging.DEBUG)

TMP_logger = logging.getLogger("zeep")
TMP_logger.setLevel(logging.WARNING)

# Configuration of the WsgiDAVApp.
# https://wsgidav.readthedocs.io/en/latest/user_guide_configure.html
config = {
    "host": os.getenv("host"),
    "port": int(os.getenv("port")),
    "provider_mapping": {
        "/": {"provider": "repdav.textgrid_dav_provider.TextgridResourceProvider"},
    },
    "verbose": 1,
    "simple_dc": {
        "user_mapping": {
            "*": {
                "user": {
                    "password": "pass"}}
        }
    },
    "http_authenticator": {
        "domain_controller": "repdav.textgrid_domain_controller.TextgridDC",
        "accept_basic": True,  # Allow basic authentication, True or False
        "accept_digest": False,  # Allow digest authentication, True or False
        # True (default digest) or False (default basic)
        "default_to_digest": False,
        # Name of a header field that will be accepted as authorized user
        "trusted_auth_header": None,
    }
}

app = WsgiDAVApp(config)

server_args = {
    "bind_addr": (config["host"], config["port"]),
    "wsgi_app": app,
}
server = wsgi.Server(**server_args)
server.start()