From a21de58eebb9b405ae0694596772589f6924b673 Mon Sep 17 00:00:00 2001 From: Roman Useinov Date: Mon, 6 Jul 2020 16:17:09 +0200 Subject: [PATCH] Allow parsing credentials from string --- src/client.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/client.rs b/src/client.rs index 05a4a55..d98a5e1 100644 --- a/src/client.rs +++ b/src/client.rs @@ -7,6 +7,8 @@ use hyper::client::HttpConnector; use hyper_tls::HttpsConnector; use log::{error, info}; use smpl_jwt::Jwt; +use std::fs; +use std::str::FromStr; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::{Arc, RwLock}; use std::time::Duration; @@ -17,7 +19,7 @@ type HyperClient = Arc, hyper::Body> pub struct State { token: Option, - credentials_path: String, + credentials_string: String, project: Option, hyper_client: HyperClient, running: Arc, @@ -46,10 +48,10 @@ impl Clone for Client { } impl Client { - pub fn new(credentials_path: String) -> Result { + pub fn new_with_string(credentials_string: String) -> Result { let mut client = Client(Arc::new(RwLock::new(State { token: None, - credentials_path, + credentials_string, project: None, hyper_client: setup_hyper(), running: Arc::new(AtomicBool::new(true)), @@ -61,6 +63,11 @@ impl Client { } } + pub fn new(credentials_path: String) -> Result { + let credentials_string = fs::read_to_string(credentials_path).unwrap(); + Self::new_with_string(credentials_string) + } + pub fn subscribe(&self, name: String) -> Subscription { Subscription { client: Some(self.clone()), @@ -127,7 +134,7 @@ impl Client { fn get_token(&mut self) -> Result { let credentials = - goauth::credentials::Credentials::from_file(&self.0.read().unwrap().credentials_path) + goauth::credentials::Credentials::from_str(&self.0.read().unwrap().credentials_string) .unwrap(); self.set_project(credentials.project());