lakestream 0.0.3

Portable file-utility for object-stores
Documentation
use super::bucket::{configure_bucket_url, S3Credentials};

#[derive(Clone)]
pub struct S3ClientConfig {
    credentials: S3Credentials,
    bucket_name: Option<String>,
    endpoint_url: Option<String>,
    region: String,
}

impl S3ClientConfig {
    pub fn new(
        credentials: S3Credentials,
        bucket_name: Option<&str>,
        endpoint_url: Option<&str>,
        region: &str,
    ) -> S3ClientConfig {
        S3ClientConfig {
            credentials,
            bucket_name: bucket_name.map(str::to_string),
            endpoint_url: endpoint_url.map(str::to_string),
            region: region.to_string(),
        }
    }

    pub fn credentials(&self) -> &S3Credentials {
        &self.credentials
    }

    pub fn bucket_name(&self) -> Option<&str> {
        self.bucket_name.as_deref()
    }

    pub fn endpoint_url(&self) -> Option<&str> {
        self.endpoint_url.as_deref()
    }

    pub fn region(&self) -> &str {
        &self.region
    }

    pub fn bucket_url(&self) -> String {
        configure_bucket_url(
            self.region(),
            self.endpoint_url.as_deref(),
            self.bucket_name.as_deref(),
        )
    }
}