aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-27 13:03:23 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-27 15:17:17 -0500
commit0a31f6bcd806eeaf1fcfddbcfbd466db969ed006 (patch)
tree6fb9e520afa91fe00615b79a3456a60603de885e
parent23911b9ad5d942456fc2b4a517c5cf6c67e0a611 (diff)
downloadteleterm-0a31f6bcd806eeaf1fcfddbcfbd466db969ed006.tar.gz
teleterm-0a31f6bcd806eeaf1fcfddbcfbd466db969ed006.zip
make the oauth methods return both tokens
-rw-r--r--teleterm/src/oauth.rs14
-rw-r--r--teleterm/src/server.rs10
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<dyn futures::Future<Item = String, Error = Error> + Send> {
+ ) -> Box<dyn futures::Future<Item = (String, String), Error = Error> + 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<dyn futures::Future<Item = String, Error = Error> + Send> {
+ ) -> Box<dyn futures::Future<Item = (String, String), Error = Error> + 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<S: tokio::io::AsyncRead + tokio::io::AsyncWrite + Send + 'static>
// 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<S: tokio::io::AsyncRead + tokio::io::AsyncWrite + Send + 'static>
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 {