pub(crate) fn versioning_status_text(status: BucketVersioningStatus) -> &'static str {
match status {
BucketVersioningStatus::Enabled => "Enabled",
BucketVersioningStatus::Suspended => "Suspended",
}
}
pub(crate) fn object_etag(body: &[u8]) -> String {
sha256_hex(body)
}
pub(crate) fn extended_request_id(request_id: &str) -> String {
base64_encode(sha256_hex(request_id.as_bytes()).as_bytes())
}
pub(crate) fn quote_etag(etag: &str) -> String {
format!("\"{}\"", etag.trim_matches('"'))
}
pub(crate) fn bucket_owner(bucket: &BucketState) -> String {
if bucket.owner.is_empty() {
"bucket-owner".to_string()
} else {
bucket.owner.clone()
}
}
pub(crate) fn bucket_region(bucket: &BucketState) -> String {
if bucket.region.is_empty() {
DEFAULT_BUCKET_REGION.to_string()
} else {
bucket.region.clone()
}
}
pub(crate) fn stored_owner(bucket: &BucketState, version: &StoredVersion) -> String {
if version.owner.is_empty() {
bucket_owner(bucket)
} else {
version.owner.clone()
}
}
pub(crate) fn owner_acl_result(
bucket: &str,
key: Option<String>,
version_id: Option<String>,
owner: String,
) -> AclResult {
AclResult {
bucket: bucket.to_string(),
key,
version_id,
owner: owner.clone(),
grants: vec![AclGrant {
grantee: owner,
permission: "FULL_CONTROL".to_string(),
}],
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub(crate) enum ListingEntry {
Object(ListedObject),
CommonPrefix(CommonPrefix),
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub(crate) enum VersionListingEntry {
Version(ListedObjectVersion),
DeleteMarker(ListedDeleteMarker),
}
#[derive(Clone, Debug)]
pub(crate) struct ReplicationSourceVersion {
pub(crate) key: String,
pub(crate) version: StoredVersion,
}
impl VersionListingEntry {
pub(crate) fn key(&self) -> &str {
match self {
Self::Version(version) => &version.key,
Self::DeleteMarker(marker) => &marker.key,
}
}
pub(crate) fn version_id(&self) -> &str {
match self {
Self::Version(version) => &version.version_id,
Self::DeleteMarker(marker) => &marker.version_id,
}
}
}