From 012c6ad6724b6a6e155ee717e6d558e1fe199e43 Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Thu, 21 Dec 2023 21:54:36 +0100 Subject: initialize aws sdk with our info --- src/storage/garage.rs | 24 +++++++++++++++++++++--- src/storage/in_memory.rs | 3 ++- src/storage/mod.rs | 3 ++- 3 files changed, 25 insertions(+), 5 deletions(-) (limited to 'src/storage') diff --git a/src/storage/garage.rs b/src/storage/garage.rs index f202067..5d00ed6 100644 --- a/src/storage/garage.rs +++ b/src/storage/garage.rs @@ -1,5 +1,6 @@ use crate::storage::*; use serde::Serialize; +use aws_sdk_s3 as s3; #[derive(Clone, Debug, Serialize)] pub struct GarageConf { @@ -26,9 +27,26 @@ impl GarageBuilder { } } +#[async_trait] impl IBuilder for GarageBuilder { - fn build(&self) -> Result { - unimplemented!(); + async fn build(&self) -> Result { + let creds = s3::config::Credentials::new( + self.conf.aws_access_key_id.clone(), + self.conf.aws_secret_access_key.clone(), + None, + None, + "aerogramme" + ); + + let config = aws_config::from_env() + .region(aws_config::Region::new(self.conf.region.clone())) + .credentials_provider(creds) + .endpoint_url(self.conf.s3_endpoint.clone()) + .load() + .await; + + let s3_client = aws_sdk_s3::Client::new(&config); + Ok(Box::new(GarageStore { s3: s3_client })) } fn unique(&self) -> UnicityBuffer { UnicityBuffer(self.unicity.clone()) @@ -36,7 +54,7 @@ impl IBuilder for GarageBuilder { } pub struct GarageStore { - dummy: String, + s3: s3::Client, } #[async_trait] diff --git a/src/storage/in_memory.rs b/src/storage/in_memory.rs index fb6e599..723bca0 100644 --- a/src/storage/in_memory.rs +++ b/src/storage/in_memory.rs @@ -106,8 +106,9 @@ impl MemBuilder { } } +#[async_trait] impl IBuilder for MemBuilder { - fn build(&self) -> Result { + async fn build(&self) -> Result { Ok(Box::new(MemStore { row: self.row.clone(), blob: self.blob.clone(), diff --git a/src/storage/mod.rs b/src/storage/mod.rs index 0fedfab..10149e9 100644 --- a/src/storage/mod.rs +++ b/src/storage/mod.rs @@ -157,8 +157,9 @@ pub trait IStore { #[derive(Clone,Debug,PartialEq,Eq,Hash)] pub struct UnicityBuffer(Vec); +#[async_trait] pub trait IBuilder: std::fmt::Debug { - fn build(&self) -> Result; + async fn build(&self) -> Result; /// Returns an opaque buffer that uniquely identifies this builder fn unique(&self) -> UnicityBuffer; -- cgit v1.2.3