advent22/api/advent22_api/dav_common.py

32 lines
759 B
Python
Raw Normal View History

2022-10-14 21:42:05 +00:00
import re
from io import BytesIO
from webdav3.client import Client as WebDAVclient
from .settings import SETTINGS
_WEBDAV_CLIENT = WebDAVclient({
"webdav_hostname": SETTINGS.webdav.url,
"webdav_login": SETTINGS.webdav.username,
"webdav_password": SETTINGS.webdav.password,
"disable_check": SETTINGS.webdav.disable_check,
})
2022-10-14 22:15:20 +00:00
async def dav_list_files(regex: re.Pattern, directory: str = "") -> list[str]:
ls = _WEBDAV_CLIENT.list(directory)
2022-10-14 21:42:05 +00:00
return [
2022-10-14 22:15:20 +00:00
f"{directory}/{path}"
2022-10-14 21:42:05 +00:00
for path in ls
if regex.search(path)
]
2022-10-14 22:15:20 +00:00
async def dav_get_file(path: str) -> BytesIO:
2022-10-14 21:42:05 +00:00
resource = _WEBDAV_CLIENT.resource(path)
buffer = BytesIO()
resource.write_to(buffer)
buffer.seek(0)
return buffer