Skip to content

Commit

Permalink
feat: bump rust-s3 (#131)
Browse files Browse the repository at this point in the history
* feat: bump rust-s3

* update

* fix test
  • Loading branch information
RWDai authored Jun 19, 2024
1 parent d15fb38 commit 00893fa
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 2 deletions.
3 changes: 2 additions & 1 deletion tardis/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,8 @@ lettre = { version = "0.11", features = [

# Object Storage
# rust-s3 = { version = "0.33", optional = true }
rust-s3 = { git = "https://github.com/tuist/rust-s3.git", rev = "b80b231" , optional = true }
rust-s3 = { git = "https://github.com/tuist/rust-s3.git", rev = "55f2947", optional = true }
# rust-s3 = { path = "../../rust-s3/s3", optional = true }
anyhow = { version = "1.0", optional = true }

# K8s
Expand Down
1 change: 1 addition & 0 deletions tardis/src/os.rs
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
pub use s3::serde_types;
pub mod os_client;
37 changes: 36 additions & 1 deletion tardis/src/os/os_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::ops::Deref;

use async_trait::async_trait;
use s3::creds::Credentials;
use s3::serde_types::Part;
use s3::serde_types::{BucketLifecycleConfiguration, Part};
use s3::{Bucket, BucketConfiguration, Region};
use tracing::{error, info, trace};

Expand Down Expand Up @@ -147,6 +147,18 @@ impl TardisOSClient {
trace!("[Tardis.OSClient] Deleting object url {}", path);
self.get_client().object_delete_url(path, expire_sec, bucket_name).await
}

pub async fn get_lifecycle(&self, bucket_name: Option<&str>) -> TardisResult<BucketLifecycleConfiguration> {
self.get_client().get_lifecycle(bucket_name).await
}

pub async fn put_lifecycle(&self, bucket_name: Option<&str>, config: BucketLifecycleConfiguration) -> TardisResult<()> {
self.get_client().put_lifecycle(bucket_name, config).await
}

pub async fn delete_lifecycle(&self, bucket_name: Option<&str>) -> TardisResult<()> {
self.get_client().delete_lifecycle(bucket_name).await
}
}

#[async_trait]
Expand Down Expand Up @@ -178,6 +190,12 @@ trait TardisOSOperations {
async fn object_get_url(&self, path: &str, expire_sec: u32, bucket_name: Option<&str>) -> TardisResult<String>;

async fn object_delete_url(&self, path: &str, expire_sec: u32, bucket_name: Option<&str>) -> TardisResult<String>;

async fn get_lifecycle(&self, bucket_name: Option<&str>) -> TardisResult<BucketLifecycleConfiguration>;

async fn put_lifecycle(&self, bucket_name: Option<&str>, config: BucketLifecycleConfiguration) -> TardisResult<()>;

async fn delete_lifecycle(&self, bucket_name: Option<&str>) -> TardisResult<()>;
}

#[async_trait]
Expand Down Expand Up @@ -397,6 +415,23 @@ impl TardisOSOperations for TardisOSS3Client {
async fn object_delete_url(&self, path: &str, expire_sec: u32, bucket_name: Option<&str>) -> TardisResult<String> {
Ok(self.get_bucket(bucket_name)?.presign_delete(path, expire_sec).await?)
}

async fn get_lifecycle(&self, bucket_name: Option<&str>) -> TardisResult<BucketLifecycleConfiguration> {
let bucket = self.get_bucket(bucket_name)?;
Ok(bucket.get_bucket_lifecycle().await?)
}

async fn put_lifecycle(&self, bucket_name: Option<&str>, config: BucketLifecycleConfiguration) -> TardisResult<()> {
let bucket = self.get_bucket(bucket_name)?;
bucket.put_bucket_lifecycle(config).await?;
Ok(())
}

async fn delete_lifecycle(&self, bucket_name: Option<&str>) -> TardisResult<()> {
let bucket = self.get_bucket(bucket_name)?;
bucket.delete_bucket_lifecycle().await?;
Ok(())
}
}

impl TardisOSS3Client {
Expand Down
11 changes: 11 additions & 0 deletions tardis/tests/test_os_client.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use std::env;

use s3::serde_types::LifecycleFilter;
use tracing::info;

use tardis::basic::result::TardisResult;
Expand Down Expand Up @@ -33,6 +34,16 @@ async fn test_os_client() -> TardisResult<()> {

info!("object_create_url = {:?}", TardisFuns::os().object_exist("test/test1.txt", Some(bucket_name)).await?);

let put_config = s3::serde_types::BucketLifecycleConfiguration::new(vec![s3::serde_types::LifecycleRule::builder("Enabled")
.expiration(s3::serde_types::Expiration::new(None, Some(30), None))
.filter(LifecycleFilter::new(None, None, None, Some("test".to_string()), None))
.build()]);
TardisFuns::os().put_lifecycle(Some(bucket_name), put_config.clone()).await?;

let get_config = TardisFuns::os().get_lifecycle(Some(bucket_name)).await?;
info!("get_lifecycle_rule = {:?}", get_config);
assert_eq!(serde_json::to_string(&put_config).unwrap(), serde_json::to_string(&get_config).unwrap());

//info!("object_create_url = {}", TardisFuns::os().object_create_url("test/test2.txt", 1, Some(bucket_name.clone()))?);
//
//info!("object_delete_url = {}", TardisFuns::os().object_delete_url("test/test.txt", 60, Some(bucket_name.clone()))?);
Expand Down

0 comments on commit 00893fa

Please sign in to comment.