Files
artcraft-services/crates/cli/dev-database-seed/src/bucket_clients.rs
T

52 lines
1.4 KiB
Rust

use std::time::Duration;
use log::info;
use cloud_storage::bucket_client::BucketClient;
use errors::AnyhowResult;
pub struct BucketClients {
pub public: BucketClient,
pub private: BucketClient,
}
pub fn get_bucket_clients() -> AnyhowResult<BucketClients> {
let access_key = easyenv::get_env_string_required("ACCESS_KEY")?;
let secret_key = easyenv::get_env_string_required("SECRET_KEY")?;
let region_name = easyenv::get_env_string_required("REGION_NAME")?;
let public_bucket_name = easyenv::get_env_string_required("PUBLIC_BUCKET_NAME")?;
let private_bucket_name = easyenv::get_env_string_required("PRIVATE_BUCKET_NAME")?;
// NB: Long timeout for dev rust builds to upload to cloud buckets.
// Unoptimized binaries sometimes take a lot of time to upload, presumably due to unoptimized code.
let bucket_timeout = easyenv::get_env_duration_seconds_or_default(
"BUCKET_TIMEOUT_SECONDS", Duration::from_secs(60 * 10));
info!("Configuring public GCS bucket...");
let public_bucket_client = BucketClient::create(
&access_key,
&secret_key,
&region_name,
&public_bucket_name,
None,
Some(bucket_timeout),
)?;
info!("Configuring private GCS bucket...");
let private_bucket_client = BucketClient::create(
&access_key,
&secret_key,
&region_name,
&private_bucket_name,
None,
Some(bucket_timeout),
)?;
Ok(BucketClients {
public: public_bucket_client,
private: private_bucket_client,
})
}