Unverified Commit 77b24b2c authored by Russell Cohen's avatar Russell Cohen Committed by GitHub
Browse files

Cleanups (#236)

* EndpointResolver should be pub(crate)

* Switch internals of Region to be Cow

* Rename ProvideIdempotencyToken to MakeIdempotenyToken

* Make the config module public and rename ConfigBuilder to Builder

* Rename credentials to

* Fix missed use of Endpoint
parent 638b2a90
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -103,7 +103,7 @@ pub type CredentialsProvider = Arc<dyn ProvideCredentials>;
///
/// Pending future design iteration, an async credentials provider may be introduced.
pub trait ProvideCredentials: Send + Sync {
    fn credentials(&self) -> Result<Credentials, CredentialsError>;
    fn provide_credentials(&self) -> Result<Credentials, CredentialsError>;
}

pub fn default_provider() -> impl ProvideCredentials {
@@ -112,7 +112,7 @@ pub fn default_provider() -> impl ProvideCredentials {
}

impl ProvideCredentials for Credentials {
    fn credentials(&self) -> Result<Credentials, CredentialsError> {
    fn provide_credentials(&self) -> Result<Credentials, CredentialsError> {
        Ok(self.clone())
    }
}
+6 −6
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ fn var(key: &str) -> Result<String, VarError> {
const ENV_PROVIDER: &str = "EnvironmentVariable";

impl ProvideCredentials for EnvironmentVariableCredentialsProvider {
    fn credentials(&self) -> Result<Credentials, CredentialsError> {
    fn provide_credentials(&self) -> Result<Credentials, CredentialsError> {
        let access_key = (self.env)("AWS_ACCESS_KEY_ID").map_err(to_cred_error)?;
        let secret_key = (self.env)("AWS_SECRET_ACCESS_KEY")
            .or_else(|_| (self.env)("SECRET_ACCESS_KEY"))
@@ -78,7 +78,7 @@ mod test {
        env.insert("AWS_SECRET_ACCESS_KEY".to_owned(), "secret".to_owned());

        let provider = EnvironmentVariableCredentialsProvider::for_map(env);
        let creds = provider.credentials().expect("valid credentials");
        let creds = provider.provide_credentials().expect("valid credentials");
        assert_eq!(creds.session_token, None);
        assert_eq!(creds.access_key_id, "access");
        assert_eq!(creds.secret_access_key, "secret");
@@ -92,7 +92,7 @@ mod test {
        env.insert("AWS_SESSION_TOKEN".to_owned(), "token".to_owned());

        let provider = EnvironmentVariableCredentialsProvider::for_map(env);
        let creds = provider.credentials().expect("valid credentials");
        let creds = provider.provide_credentials().expect("valid credentials");
        assert_eq!(creds.session_token.unwrap(), "token");
        assert_eq!(creds.access_key_id, "access");
        assert_eq!(creds.secret_access_key, "secret");
@@ -106,7 +106,7 @@ mod test {
        env.insert("AWS_SESSION_TOKEN".to_owned(), "token".to_owned());

        let provider = EnvironmentVariableCredentialsProvider::for_map(env);
        let creds = provider.credentials().expect("valid credentials");
        let creds = provider.provide_credentials().expect("valid credentials");
        assert_eq!(creds.session_token.unwrap(), "token");
        assert_eq!(creds.access_key_id, "access");
        assert_eq!(creds.secret_access_key, "secret");
@@ -116,7 +116,7 @@ mod test {
    fn missing() {
        let env = HashMap::new();
        let provider = EnvironmentVariableCredentialsProvider::for_map(env);
        let err = provider.credentials().expect_err("no credentials defined");
        let err = provider.provide_credentials().expect_err("no credentials defined");
        match err {
            CredentialsError::Unhandled(_) => panic!("wrong error type"),
            _ => (),
@@ -127,6 +127,6 @@ mod test {
    fn real_environment() {
        let provider = EnvironmentVariableCredentialsProvider::new();
        // we don't know what's in the env, just make sure it doesn't crash.
        let _ = provider.credentials();
        let _ = provider.provide_credentials();
    }
}
+2 −6
Original line number Diff line number Diff line
@@ -112,7 +112,6 @@ impl RetryHandlerFactory {
    }
}


#[derive(Default, Clone)]
struct RequestLocalRetryState {
    attempts: u32,
@@ -143,8 +142,7 @@ struct CrossRequestRetryState {
impl CrossRequestRetryState {
    pub fn new(initial_quota: usize) -> Self {
        Self {
            quota_available:
            Arc::new(Mutex::new(initial_quota)),
            quota_available: Arc::new(Mutex::new(initial_quota)),
        }
    }

@@ -271,9 +269,7 @@ where

#[cfg(test)]
mod test {
    use crate::retry::{
        RetryConfig, RetryHandlerFactory,
    };
    use crate::retry::{RetryConfig, RetryHandlerFactory};
    use smithy_types::retry::ErrorKind;
    use std::time::Duration;

+1 −1
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ fn signing_config(
    let cred_provider = config
        .get::<CredentialsProvider>()
        .ok_or(SigningStageError::MissingCredentialsProvider)?;
    let creds = cred_provider.credentials()?;
    let creds = cred_provider.provide_credentials()?;
    let region = config
        .get::<SigningRegion>()
        .ok_or(SigningStageError::MissingSigningRegion)?;
+11 −13
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@
 * SPDX-License-Identifier: Apache-2.0.
 */

use std::sync::Arc;
use std::borrow::Cow;

/// The region to send requests to.
///
@@ -14,23 +14,21 @@ use std::sync::Arc;
/// See http://docs.aws.amazon.com/general/latest/gr/rande.html for
/// information on AWS regions.
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Region(Arc<String>);
pub struct Region(
    // Regions are almost always known statically. However, as an escape hatch for when they
    // are not, allow for an owned region
    Cow<'static, str>
);

impl AsRef<str> for Region {
    fn as_ref(&self) -> &str {
        self.0.as_str()
        &self.0
    }
}

impl Region {
    pub fn new(region: impl Into<String>) -> Self {
        Self(Arc::new(region.into()))
    }
}

impl From<&str> for Region {
    fn from(region: &str) -> Self {
        Region(Arc::new(region.to_string()))
    pub fn new(region: impl Into<Cow<'static, str>>) -> Self {
        Self(region.into())
    }
}

@@ -72,11 +70,11 @@ impl ProvideRegion for EnvironmentProvider {
///
/// Generally, user code will not need to interact with `SigningRegion`. See `[Region](crate::Region)`.
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct SigningRegion(Arc<String>);
pub struct SigningRegion(Cow<'static, str>);

impl AsRef<str> for SigningRegion {
    fn as_ref(&self) -> &str {
        self.0.as_str()
        &self.0
    }
}

Loading