You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by li...@apache.org on 2022/05/25 09:58:09 UTC

[rocketmq-client-rust] 02/03: Refactor

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 <li...@gmail.com>
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;