use super::BlobStorageApi;
use crate::{
cdk::types::Principal,
ops::blob_storage::{conversion::BlobStorageConversionOps, lifecycle::BlobStorageLifecycleOps},
};
impl BlobStorageApi {
#[must_use]
pub fn pending_deletion_hashes_for_gateway(caller: Principal) -> Vec<String> {
if !BlobStorageLifecycleOps::is_gateway_principal(caller) {
return Vec::new();
}
BlobStorageLifecycleOps::pending_deletion_hashes()
}
pub fn confirm_deleted_by_gateway_hash_bytes_batch(
caller: Principal,
hash_bytes_list: Vec<Vec<u8>>,
) {
if !BlobStorageLifecycleOps::is_gateway_principal(caller) {
return;
}
for bytes in &hash_bytes_list {
if let Ok(hash) = BlobStorageConversionOps::root_hash_from_bytes(bytes) {
BlobStorageLifecycleOps::confirm_deleted_by_gateway(&hash);
}
}
}
pub fn upsert_gateway_principal(principal: Principal, now_ns: u64) {
BlobStorageLifecycleOps::upsert_gateway_principal(principal, now_ns);
}
#[must_use]
pub fn replace_gateway_principals(principals: &[Principal], now_ns: u64) -> u64 {
BlobStorageLifecycleOps::replace_gateway_principals(principals, now_ns)
}
#[must_use]
pub fn remove_gateway_principal(principal: Principal) -> bool {
BlobStorageLifecycleOps::remove_gateway_principal(principal)
}
#[must_use]
pub fn gateway_principal_count() -> u64 {
BlobStorageLifecycleOps::gateway_principal_count()
}
#[must_use]
pub fn is_gateway_principal(principal: Principal) -> bool {
BlobStorageLifecycleOps::is_gateway_principal(principal)
}
}