From 0a31f6bcd806eeaf1fcfddbcfbd466db969ed006 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 27 Nov 2019 13:03:23 -0500 Subject: make the oauth methods return both tokens --- teleterm/src/oauth.rs | 14 ++++++++------ teleterm/src/server.rs | 10 ++++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/teleterm/src/oauth.rs b/teleterm/src/oauth.rs index 0c6627c..1229855 100644 --- a/teleterm/src/oauth.rs +++ b/teleterm/src/oauth.rs @@ -29,10 +29,11 @@ pub trait Oauth { auth_url.to_string() } - fn get_access_token_from_auth_code( + fn get_tokens_from_auth_code( &self, code: &str, - ) -> Box + Send> { + ) -> Box + Send> + { let token_cache_file = self.server_token_file(false).unwrap(); let fut = self .client() @@ -51,15 +52,16 @@ pub trait Oauth { &access_token, &refresh_token, ) - .map(move |_| access_token) + .map(move |_| (access_token, refresh_token)) }); Box::new(fut) } - fn get_access_token_from_refresh_token( + fn get_tokens_from_refresh_token( &self, token: &str, - ) -> Box + Send> { + ) -> Box + Send> + { let token_cache_file = self.server_token_file(false).unwrap(); let fut = self .client() @@ -80,7 +82,7 @@ pub trait Oauth { &access_token, &refresh_token, ) - .map(move |_| access_token) + .map(move |_| (access_token, refresh_token)) }); Box::new(fut) } diff --git a/teleterm/src/server.rs b/teleterm/src/server.rs index 866edac..2215319 100644 --- a/teleterm/src/server.rs +++ b/teleterm/src/server.rs @@ -426,10 +426,10 @@ impl // XXX unwrap here isn't super safe let refresh_token = refresh_token.unwrap(); client - .get_access_token_from_refresh_token( + .get_tokens_from_refresh_token( refresh_token.trim(), ) - .and_then(|access_token| { + .and_then(|(access_token, _)| { client.get_username_from_access_token( &access_token, ) @@ -618,8 +618,10 @@ impl let term_info = conn.state.term_info().unwrap().clone(); let fut = client - .get_access_token_from_auth_code(code) - .and_then(|token| client.get_username_from_access_token(&token)) + .get_tokens_from_auth_code(code) + .and_then(|(access_token, _)| { + client.get_username_from_access_token(&access_token) + }) .map(|username| { ( ConnectionState::LoggedIn { -- cgit v1.2.3