This commit is contained in:
2024-04-22 01:26:17 +02:00
parent d2a9754923
commit 547418859e
2 changed files with 28 additions and 4 deletions

View File

@@ -10,6 +10,7 @@ pub struct Config {
pub postgres_db: String, pub postgres_db: String,
pub minio_host: String, pub minio_host: String,
pub internal_minio_host: String,
pub minio_bucket: String, pub minio_bucket: String,
pub minio_access_key: String, pub minio_access_key: String,
pub minio_secret_key: String, pub minio_secret_key: String,
@@ -42,6 +43,7 @@ impl Config {
postgres_db: get_env("POSTGRES_DB"), postgres_db: get_env("POSTGRES_DB"),
minio_host: get_env("MINIO_HOST"), minio_host: get_env("MINIO_HOST"),
internal_minio_host: get_env("INTERNAL_MINIO_HOST"),
minio_bucket: get_env("MINIO_BUCKET"), minio_bucket: get_env("MINIO_BUCKET"),
minio_access_key: get_env("MINIO_ACCESS_KEY"), minio_access_key: get_env("MINIO_ACCESS_KEY"),
minio_secret_key: get_env("MINIO_SECRET_KEY"), minio_secret_key: get_env("MINIO_SECRET_KEY"),

View File

@@ -17,6 +17,21 @@ pub fn get_minio() -> Minio {
Minio::builder() Minio::builder()
.endpoint(&config::CONFIG.minio_host) .endpoint(&config::CONFIG.minio_host)
.provider(provider) .provider(provider)
.secure(true)
.build()
.unwrap()
}
pub fn get_internal_minio() -> Minio {
let provider = StaticProvider::new(
&config::CONFIG.minio_access_key,
&config::CONFIG.minio_secret_key,
None,
);
Minio::builder()
.endpoint(&config::CONFIG.internal_minio_host)
.provider(provider)
.secure(false) .secure(false)
.build() .build()
.unwrap() .unwrap()
@@ -42,20 +57,25 @@ pub async fn upload_to_minio(
archive: SpooledTempFile, archive: SpooledTempFile,
filename: String, filename: String,
) -> Result<String, Box<dyn std::error::Error + Send + Sync>> { ) -> Result<String, Box<dyn std::error::Error + Send + Sync>> {
let minio = get_minio(); let internal_minio = get_internal_minio();
let is_bucket_exist = match minio.bucket_exists(&config::CONFIG.minio_bucket).await { let is_bucket_exist = match internal_minio
.bucket_exists(&config::CONFIG.minio_bucket)
.await
{
Ok(v) => v, Ok(v) => v,
Err(err) => return Err(Box::new(err)), Err(err) => return Err(Box::new(err)),
}; };
if !is_bucket_exist { if !is_bucket_exist {
let _ = minio.make_bucket(&config::CONFIG.minio_bucket, false).await; let _ = internal_minio
.make_bucket(&config::CONFIG.minio_bucket, false)
.await;
} }
let data_stream = get_stream(Box::new(archive)); let data_stream = get_stream(Box::new(archive));
if let Err(err) = minio if let Err(err) = internal_minio
.put_object_stream( .put_object_stream(
&config::CONFIG.minio_bucket, &config::CONFIG.minio_bucket,
filename.clone(), filename.clone(),
@@ -67,6 +87,8 @@ pub async fn upload_to_minio(
return Err(Box::new(err)); return Err(Box::new(err));
} }
let minio = get_minio();
let link = match minio let link = match minio
.presigned_get_object(PresignedArgs::new(&config::CONFIG.minio_bucket, filename)) .presigned_get_object(PresignedArgs::new(&config::CONFIG.minio_bucket, filename))
.await .await