use crate::api::list_rewrite::ListRewrite;
use crate::api::response::BucketEntry;
use crate::error::ProxyError;
use crate::maybe_send::{MaybeSend, MaybeSync};
use crate::types::{BucketConfig, BucketOwner, ResolvedIdentity, S3Operation};
use std::future::Future;
pub const DEFAULT_BUCKET_OWNER: &str = "multistore-proxy";
pub struct ResolvedBucket {
pub config: BucketConfig,
pub list_rewrite: Option<ListRewrite>,
pub display_name: Option<String>,
}
pub trait BucketRegistry: Clone + MaybeSend + MaybeSync + 'static {
fn get_bucket(
&self,
name: &str,
identity: &ResolvedIdentity,
operation: &S3Operation,
) -> impl Future<Output = Result<ResolvedBucket, ProxyError>> + MaybeSend;
fn list_buckets(
&self,
identity: &ResolvedIdentity,
) -> impl Future<Output = Result<Vec<BucketEntry>, ProxyError>> + MaybeSend;
fn bucket_owner(&self) -> BucketOwner {
BucketOwner {
id: DEFAULT_BUCKET_OWNER.to_string(),
display_name: DEFAULT_BUCKET_OWNER.to_string(),
}
}
}