Return a copy of the session object from log_in, register_*

This commit is contained in:
Jonas Platte 2017-10-14 12:33:51 +02:00
parent 71605f0113
commit 4eb8e65248

View File

@ -109,7 +109,7 @@ where
/// session data returned by the endpoint in this client, instead of /// session data returned by the endpoint in this client, instead of
/// returning it. /// returning it.
pub fn log_in(&self, user: String, password: String) pub fn log_in(&self, user: String, password: String)
-> impl Future<Item = (), Error = Error> { -> impl Future<Item = Session, Error = Error> {
use api::r0::session::login; use api::r0::session::login;
let data = self.0.clone(); let data = self.0.clone();
@ -121,15 +121,17 @@ where
password, password,
user, user,
}).map(move |response| { }).map(move |response| {
*data.session.borrow_mut() = let session = Session::new(response.access_token, response.user_id);
Some(Session::new(response.access_token, response.user_id)); *data.session.borrow_mut() = Some(session.clone());
session
}) })
} }
/// Register as a guest. In contrast to api::r0::account::register::call(), /// Register as a guest. In contrast to api::r0::account::register::call(),
/// this method stores the session data returned by the endpoint in this /// this method stores the session data returned by the endpoint in this
/// client, instead of returning it. /// client, instead of returning it.
pub fn register_guest(&self) -> impl Future<Item = (), Error = Error> { pub fn register_guest(&self) -> impl Future<Item = Session, Error = Error> {
use api::r0::account::register; use api::r0::account::register;
let data = self.0.clone(); let data = self.0.clone();
@ -143,8 +145,10 @@ where
password: None, password: None,
username: None, username: None,
}).map(move |response| { }).map(move |response| {
*data.session.borrow_mut() = let session = Session::new(response.access_token, response.user_id);
Some(Session::new(response.access_token, response.user_id)); *data.session.borrow_mut() = Some(session.clone());
session
}) })
} }
@ -160,7 +164,7 @@ where
&self, &self,
username: Option<String>, username: Option<String>,
password: String, password: String,
) -> impl Future<Item = (), Error = Error> { ) -> impl Future<Item = Session, Error = Error> {
use api::r0::account::register; use api::r0::account::register;
let data = self.0.clone(); let data = self.0.clone();
@ -174,8 +178,10 @@ where
password: Some(password), password: Some(password),
username: username, username: username,
}).map(move |response| { }).map(move |response| {
*data.session.borrow_mut() = let session = Session::new(response.access_token, response.user_id);
Some(Session::new(response.access_token, response.user_id)); *data.session.borrow_mut() = Some(session.clone());
session
}) })
} }