from functools import lru_cache from typing import Any from caldav import DAVClient as CalDAVclient from caldav import Principal as CalDAVPrincipal from webdav3.client import Client as WebDAVclient from webdav3.client import Resource as WebDAVResource from .async_helpers import run_in_executor from .settings import SETTINGS _WEBDAV_CLIENT = WebDAVclient({ "webdav_hostname": SETTINGS.webdav_url, "webdav_login": SETTINGS.dav_username, "webdav_password": SETTINGS.dav_password, }) @lru_cache def webdav_resource(remote_path: Any) -> WebDAVResource: return _WEBDAV_CLIENT.resource(remote_path) @run_in_executor def webdav_list(remote_path: str) -> list: return _WEBDAV_CLIENT.list(remote_path) _CALDAV_CLIENT = CalDAVclient( url=SETTINGS.caldav_url, username=SETTINGS.dav_username, password=SETTINGS.dav_password, ) def caldav_principal() -> CalDAVPrincipal: return _CALDAV_CLIENT.principal()