#![deny(missing_docs)]
use aws_smithy_types::retry::RetryConfig;
use crate::credentials::SharedCredentialsProvider;
use crate::region::Region;
pub struct Config {
region: Option<Region>,
retry_config: Option<RetryConfig>,
credentials_provider: Option<SharedCredentialsProvider>,
}
#[derive(Default)]
pub struct Builder {
region: Option<Region>,
retry_config: Option<RetryConfig>,
credentials_provider: Option<SharedCredentialsProvider>,
}
impl Builder {
pub fn region(mut self, region: impl Into<Option<Region>>) -> Self {
self.set_region(region);
self
}
pub fn set_region(&mut self, region: impl Into<Option<Region>>) -> &mut Self {
self.region = region.into();
self
}
pub fn retry_config(mut self, retry_config: RetryConfig) -> Self {
self.set_retry_config(Some(retry_config));
self
}
pub fn set_retry_config(&mut self, retry_config: Option<RetryConfig>) -> &mut Self {
self.retry_config = retry_config;
self
}
pub fn credentials_provider(mut self, provider: SharedCredentialsProvider) -> Self {
self.set_credentials_provider(Some(provider));
self
}
pub fn set_credentials_provider(
&mut self,
provider: Option<SharedCredentialsProvider>,
) -> &mut Self {
self.credentials_provider = provider;
self
}
pub fn build(self) -> Config {
Config {
region: self.region,
retry_config: self.retry_config,
credentials_provider: self.credentials_provider,
}
}
}
impl Config {
pub fn region(&self) -> Option<&Region> {
self.region.as_ref()
}
pub fn retry_config(&self) -> Option<&RetryConfig> {
self.retry_config.as_ref()
}
pub fn credentials_provider(&self) -> Option<&SharedCredentialsProvider> {
self.credentials_provider.as_ref()
}
pub fn builder() -> Builder {
Builder::default()
}
}