This is an automated email from the ASF dual-hosted git repository. lizhanhui pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/rocketmq-client-rust.git
commit 04d296b5b6f2a6fe7cb102a21666fc25475e0df9 Author: Li Zhanhui <[email protected]> AuthorDate: Wed Apr 6 02:22:43 2022 +0000 Refactor --- src/client.rs | 49 +----------------------------- src/credentials.rs | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 3 files changed, 89 insertions(+), 48 deletions(-) diff --git a/src/client.rs b/src/client.rs index c67ef55..3b1cdde 100644 --- a/src/client.rs +++ b/src/client.rs @@ -8,40 +8,7 @@ use tonic::{ Request, Response, }; -#[derive(Debug, PartialEq)] -pub struct Credentials { - access_key: String, - access_secret: String, - session_token: Option<String>, -} - -pub trait CredentialProvider { - fn get_credentials(&self) -> Credentials; -} - -pub struct StaticCredentialProvider { - access_key: String, - access_secret: String, -} - -impl StaticCredentialProvider { - pub fn new(access_key: &str, access_secret: &str) -> Self { - Self { - access_key: access_key.to_owned(), - access_secret: access_secret.to_owned(), - } - } -} - -impl CredentialProvider for StaticCredentialProvider { - fn get_credentials(&self) -> Credentials { - Credentials { - access_key: self.access_key.clone(), - access_secret: self.access_secret.clone(), - session_token: None, - } - } -} +use crate::credentials::CredentialProvider; #[derive(Default)] struct ClientConfig { @@ -159,20 +126,6 @@ mod test { assert_eq!(route_response.status.unwrap().code, Code::Ok as i32); } - #[test] - fn test_static_credentials_provider() { - let provider = StaticCredentialProvider::new("ak", "as"); - let credentials = provider.get_credentials(); - assert_eq!( - credentials, - Credentials { - access_key: String::from("ak"), - access_secret: String::from("as"), - session_token: None, - } - ); - } - #[tokio::test] async fn test_periodic_task() { let client_manager = ClientManager::default(); diff --git a/src/credentials.rs b/src/credentials.rs new file mode 100644 index 0000000..43d44a9 --- /dev/null +++ b/src/credentials.rs @@ -0,0 +1,87 @@ +#[derive(Debug, PartialEq)] +pub struct Credentials { + access_key: String, + access_secret: String, + session_token: Option<String>, +} + +pub trait CredentialProvider { + fn get_credentials(&self) -> Credentials; +} + +pub struct StaticCredentialProvider { + access_key: String, + access_secret: String, +} + +impl StaticCredentialProvider { + pub fn new(access_key: &str, access_secret: &str) -> Self { + Self { + access_key: access_key.to_owned(), + access_secret: access_secret.to_owned(), + } + } +} + +impl CredentialProvider for StaticCredentialProvider { + fn get_credentials(&self) -> Credentials { + Credentials { + access_key: self.access_key.clone(), + access_secret: self.access_secret.clone(), + session_token: None, + } + } +} + +#[derive(Debug, Default)] +pub struct EnvironmentVariableCredentialProvider { + access_key: String, + access_secret: String, +} + +impl EnvironmentVariableCredentialProvider { + pub fn new() -> Result<Self, std::env::VarError> { + let access_key = std::env::var("ACCESS_KEY")?; + let access_secret = std::env::var("ACCESS_SECRET")?; + Ok(Self { + access_key, + access_secret, + }) + } +} + +impl CredentialProvider for EnvironmentVariableCredentialProvider { + fn get_credentials(&self) -> Credentials { + Credentials { + access_key: self.access_key.clone(), + access_secret: self.access_secret.clone(), + session_token: None, + } + } +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_static_credentials_provider() { + let provider = StaticCredentialProvider::new("ak", "as"); + let credentials = provider.get_credentials(); + assert_eq!( + credentials, + Credentials { + access_key: String::from("ak"), + access_secret: String::from("as"), + session_token: None, + } + ); + } + + #[test] + fn test_environment_variable_credential_provider() { + let env_credentials_provider = EnvironmentVariableCredentialProvider::new(); + assert_eq!(true, env_credentials_provider.is_err()); + + } +} diff --git a/src/lib.rs b/src/lib.rs index 57769fd..7ffd5e9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,4 @@ pub mod client; +pub mod credentials; pub mod pb; pub mod server;
