Fix WebDAV lock database path (handler.rs)

Lock DB now uses data/webdav/{user}/.locks.sqlite
Server responds to GET/PROPFIND (HTTP 200 OK)
This commit is contained in:
Warren
2026-05-18 02:01:35 +08:00
parent d646e81e36
commit 0e3ea67e7f

31
src/webdav/handler.rs Normal file
View File

@@ -0,0 +1,31 @@
use std::path::PathBuf;
use dav_server::{DavHandler, localfs::LocalFs};
use crate::webdav::lock_manager::LockManager;
pub struct MarkBaseWebDAV {
user_id: String,
db_path: PathBuf,
}
impl MarkBaseWebDAV {
pub fn new(user_id: String, db_path: PathBuf) -> Self {
MarkBaseWebDAV { user_id, db_path }
}
pub fn create_handler(&self) -> DavHandler {
let webdav_dir = format!("data/webdav/{}/", self.user_id);
let mount_point = PathBuf::from(&webdav_dir);
std::fs::create_dir_all(&mount_point).expect("Failed to create WebDAV directory");
let lock_db_path = mount_point.join(".locks.sqlite");
let lock_manager = LockManager::new(self.user_id.clone(), lock_db_path);
lock_manager.init_db().expect("Failed to initialize lock database");
DavHandler::builder()
.filesystem(LocalFs::new(&mount_point, false, false, false))
.locksystem(Box::new(lock_manager))
.strip_prefix("/webdav")
.build_handler()
}
}