mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-07 13:53:12 +00:00
55 lines
1.3 KiB
Rust
55 lines
1.3 KiB
Rust
use s3s::dto::{BucketVersioningStatus, VersioningConfiguration};
|
|
|
|
pub trait VersioningApi {
|
|
fn enabled(&self) -> bool;
|
|
fn prefix_enabled(&self, prefix: &str) -> bool;
|
|
fn prefix_suspended(&self, prefix: &str) -> bool;
|
|
}
|
|
|
|
impl VersioningApi for VersioningConfiguration {
|
|
fn enabled(&self) -> bool {
|
|
self.status
|
|
.as_ref()
|
|
.is_some_and(|v| v.as_str() == BucketVersioningStatus::ENABLED)
|
|
}
|
|
|
|
fn prefix_enabled(&self, prefix: &str) -> bool {
|
|
if !self
|
|
.status
|
|
.as_ref()
|
|
.is_some_and(|v| v.as_str() == BucketVersioningStatus::ENABLED)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if prefix.is_empty() {
|
|
return true;
|
|
}
|
|
|
|
// TODO: ExcludeFolders
|
|
|
|
true
|
|
}
|
|
fn prefix_suspended(&self, prefix: &str) -> bool {
|
|
if self
|
|
.status
|
|
.as_ref()
|
|
.is_some_and(|v| v.as_str() == BucketVersioningStatus::SUSPENDED)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
if let Some(status) = self.status.as_ref() {
|
|
if status.as_str() == BucketVersioningStatus::ENABLED {
|
|
if prefix.is_empty() {
|
|
return false;
|
|
}
|
|
|
|
// TODO: ExcludeFolders
|
|
}
|
|
}
|
|
|
|
false
|
|
}
|
|
}
|