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
|