ovdashboard/api/ovdashboard_api/dav_common.py

37 lines
943 B
Python

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()