curo1305
311dfa1513
feat(05-04): implement WebDAVBackend with SSRF guard and asyncio wrapping
- All 7 StorageBackend methods implemented as async coroutines
- validate_cloud_url() called in __init__ (SSRF at construct time) and before
every asyncio.to_thread() call (D-17 defense-in-depth / T-05-04-01, T-05-04-02)
- _make_path() builds "docuvault/{user_id}/{document_id}{ext}" with urllib.parse.quote
encoding on path segments (RESEARCH.md Pitfall 2)
- presigned_get_url and generate_presigned_put_url raise NotImplementedError (D-14)
- All webdavclient3 sync calls (upload_to, download_from, clean, info, check, mkdir)
wrapped in asyncio.to_thread() per MinIOBackend pattern
- delete_object silently ignores missing file exceptions (StorageBackend ABC contract)
2026-05-28 21:09:25 +02:00
..
2026-05-22 19:35:38 +02:00
2026-05-28 17:10:52 +02:00
2026-05-25 18:48:32 +02:00
2026-05-23 20:05:34 +02:00
2026-05-25 18:30:28 +02:00
2026-05-28 21:00:48 +02:00
2026-05-28 21:09:25 +02:00
2026-05-25 18:50:50 +02:00
2026-05-28 21:07:18 +02:00
2026-05-24 11:30:56 +02:00
2026-05-25 18:50:50 +02:00
2026-05-28 20:48:38 +02:00
2026-05-22 08:53:28 +02:00
2026-05-25 18:48:02 +02:00
2026-05-22 08:53:28 +02:00
2026-05-28 20:48:38 +02:00