This commit is contained in:
2022-12-30 20:52:41 +08:00
parent f933400535
commit d3a950b54d
47 changed files with 10444 additions and 2 deletions

37
examples/actix.rs Normal file
View File

@@ -0,0 +1,37 @@
use std::io;
use actix_web::{web, App, HttpServer};
use webdav_handler::actix::*;
use webdav_handler::{fakels::FakeLs, localfs::LocalFs, DavConfig, DavHandler};
pub async fn dav_handler(req: DavRequest, davhandler: web::Data<DavHandler>) -> DavResponse {
if let Some(prefix) = req.prefix() {
let config = DavConfig::new().strip_prefix(prefix);
davhandler.handle_with(config, req.request).await.into()
} else {
davhandler.handle(req.request).await.into()
}
}
#[actix_web::main]
async fn main() -> io::Result<()> {
env_logger::init();
let addr = "127.0.0.1:4918";
let dir = "/tmp";
let dav_server = DavHandler::builder()
.filesystem(LocalFs::new(dir, false, false, false))
.locksystem(FakeLs::new())
.build_handler();
println!("actix-web example: listening on {} serving {}", addr, dir);
HttpServer::new(move || {
App::new()
.data(dav_server.clone())
.service(web::resource("/{tail:.*}").to(dav_handler))
})
.bind(addr)?
.run()
.await
}