Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f406ed1961 | ||
|
|
6ed1d00a32 |
Generated
+1
-1
@@ -1370,7 +1370,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "labyrinth"
|
name = "labyrinth"
|
||||||
version = "0.0.2"
|
version = "0.0.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aws-config",
|
"aws-config",
|
||||||
"aws-sdk-s3",
|
"aws-sdk-s3",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "labyrinth"
|
name = "labyrinth"
|
||||||
version = "0.0.2"
|
version = "0.0.4"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
description = "Library for managing soaricarus storage"
|
description = "Library for managing soaricarus storage"
|
||||||
|
|||||||
+49
-2
@@ -37,8 +37,7 @@ pub async fn init_client(config: &config::Config) -> aws_sdk_s3::Client {
|
|||||||
.force_path_style(true)
|
.force_path_style(true)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
let client = aws_sdk_s3::Client::from_conf(s3_config);
|
aws_sdk_s3::Client::from_conf(s3_config)
|
||||||
client
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
@@ -48,6 +47,7 @@ pub enum Error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Labyrinth {
|
impl Labyrinth {
|
||||||
|
/// Upload object to the bucket
|
||||||
pub async fn upload(
|
pub async fn upload(
|
||||||
&self,
|
&self,
|
||||||
file_key: &str,
|
file_key: &str,
|
||||||
@@ -77,4 +77,51 @@ impl Labyrinth {
|
|||||||
Err(err) => Err(Error::Info(err.to_string())),
|
Err(err) => Err(Error::Info(err.to_string())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Download object from the bucket
|
||||||
|
pub async fn download(&self, file_key: &str) -> Result<Vec<u8>, Error> {
|
||||||
|
let client = init_client(&self.config).await;
|
||||||
|
|
||||||
|
match client
|
||||||
|
.get_object()
|
||||||
|
.bucket(self.config.bucket.clone())
|
||||||
|
.key(file_key)
|
||||||
|
.send()
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(response) => {
|
||||||
|
let body = response.body;
|
||||||
|
|
||||||
|
// Get the body as ByteStream
|
||||||
|
match body.collect().await {
|
||||||
|
Ok(data) => {
|
||||||
|
let bytes = data.into_bytes();
|
||||||
|
let raw_data = bytes.to_vec();
|
||||||
|
Ok(raw_data)
|
||||||
|
}
|
||||||
|
Err(err) => Err(Error::Info(err.to_string())),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(err) => Err(Error::Info(err.to_string())),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Delete an object from the bucket
|
||||||
|
pub async fn delete(
|
||||||
|
&self,
|
||||||
|
file_key: &str,
|
||||||
|
) -> Result<aws_sdk_s3::operation::delete_object::DeleteObjectOutput, Error> {
|
||||||
|
let client = init_client(&self.config).await;
|
||||||
|
|
||||||
|
match client
|
||||||
|
.delete_object()
|
||||||
|
.bucket(self.config.bucket.clone())
|
||||||
|
.key(file_key)
|
||||||
|
.send()
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(response) => Ok(response),
|
||||||
|
Err(err) => Err(Error::Info(err.to_string())),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user