feat(webdav): add WebDAV protocol gateway (#2158)

Signed-off-by: yxrxy <1532529704@qq.com>
Co-authored-by: houseme <housemecn@gmail.com>
Co-authored-by: 马登山 <Cxymds@qq.com>
Co-authored-by: heihutu <30542132+heihutu@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: 安正超 <anzhengchao@gmail.com>
This commit is contained in:
yxrxy
2026-03-14 23:06:53 +08:00
committed by GitHub
parent f66a90c1b2
commit d3cff7d033
21 changed files with 2265 additions and 8 deletions
+29
View File
@@ -182,6 +182,35 @@ pub fn is_operation_supported(protocol: super::session::Protocol, action: &S3Act
S3Action::GetObjectAcl => false,
S3Action::PutObjectAcl => false,
},
super::session::Protocol::WebDav => match action {
// Bucket operations
S3Action::CreateBucket => true, // MKCOL at root level
S3Action::DeleteBucket => true, // DELETE at root level
S3Action::ListBucket => true, // PROPFIND
S3Action::ListBuckets => true, // PROPFIND at root
S3Action::HeadBucket => true, // PROPFIND/HEAD
// Object operations
S3Action::GetObject => true, // GET
S3Action::PutObject => true, // PUT
S3Action::DeleteObject => true, // DELETE
S3Action::HeadObject => true, // HEAD/PROPFIND
S3Action::CopyObject => false, // COPY (not implemented yet)
// Multipart operations (not supported in WebDAV)
S3Action::CreateMultipartUpload => false,
S3Action::UploadPart => false,
S3Action::CompleteMultipartUpload => false,
S3Action::AbortMultipartUpload => false,
S3Action::ListMultipartUploads => false,
S3Action::ListParts => false,
// ACL operations (not supported in WebDAV)
S3Action::GetBucketAcl => false,
S3Action::PutBucketAcl => false,
S3Action::GetObjectAcl => false,
S3Action::PutObjectAcl => false,
},
}
}
+1
View File
@@ -21,6 +21,7 @@ use std::sync::Arc;
pub enum Protocol {
Ftps,
Swift,
WebDav,
}
/// Protocol principal representing an authenticated user