use object_store::{
Error as ObjectStoreError,
http::{HttpBuilder, HttpStore},
};
use super::super::ObjectStorage;
#[derive(Clone, Debug)]
pub struct HttpObjectStorageBuilder {
name: String,
builder: HttpBuilder,
}
impl HttpObjectStorageBuilder {
pub(crate) fn new(name: impl Into<String>, url: impl Into<String>) -> Self {
Self {
name: name.into(),
builder: HttpBuilder::new().with_url(url),
}
}
#[must_use]
pub fn configure_store(mut self, configure: impl FnOnce(HttpBuilder) -> HttpBuilder) -> Self {
self.builder = configure(self.builder);
self
}
pub fn build(self) -> Result<ObjectStorage<HttpStore>, ObjectStoreError> {
self.builder
.build()
.map(|store| ObjectStorage::from_store(self.name, store))
}
}