pub use super::client_config::S3ClientConfig;
use super::request_builder::RequestBuilder;
pub struct S3Client {
pub resource: Option<String>,
pub config: S3ClientConfig,
pub query_string: Option<String>,
pub request_builder: RequestBuilder,
}
impl S3Client {
pub fn new(config: S3ClientConfig) -> S3Client {
log::info!(
"S3Client created with endpoint_url: {}",
config.bucket_url()
);
let request_builder = RequestBuilder::new(&config.bucket_url());
S3Client {
resource: None,
config,
query_string: None,
request_builder,
}
}
pub fn config(&self) -> &S3ClientConfig {
&self.config
}
pub fn region(&self) -> &str {
self.config.region()
}
pub fn url(&self) -> String {
format!(
"{}/{}?{}",
self.config.bucket_url(),
self.resource.as_ref().unwrap_or(&"".to_string()),
self.query_string.as_ref().unwrap_or(&"".to_string())
)
}
}
impl Clone for S3Client {
fn clone(&self) -> Self {
S3Client::new(self.config.clone())
}
}