Make register and login return User

This commit is contained in:
bitfl0wer 2023-05-09 14:05:03 +02:00
parent b199d11889
commit f06b43a8fe
2 changed files with 36 additions and 8 deletions

View File

@ -12,7 +12,7 @@ pub mod login {
pub async fn login_account( pub async fn login_account(
&mut self, &mut self,
login_schema: &LoginSchema, login_schema: &LoginSchema,
) -> Result<LoginResult, InstanceServerError> { ) -> Result<crate::api::types::User, InstanceServerError> {
let requester = &mut self.requester; let requester = &mut self.requester;
let json_schema = json!(login_schema); let json_schema = json!(login_schema);
let client = Client::new(); let client = Client::new();
@ -49,9 +49,21 @@ pub mod login {
return Err(InstanceServerError::InvalidFormBodyError { error_type, error }); return Err(InstanceServerError::InvalidFormBodyError { error_type, error });
} }
let cloned_limits = self.limits.clone();
let login_result: LoginResult = from_str(&response_text_string).unwrap(); let login_result: LoginResult = from_str(&response_text_string).unwrap();
let object = self
.get_user(login_result.token.clone(), None)
.await
.unwrap();
let user = crate::api::types::User::new(
self,
login_result.token,
cloned_limits,
login_result.settings,
Some(object),
);
Ok(login_result) Ok(user)
} }
} }
} }

View File

@ -5,7 +5,7 @@ pub mod register {
use crate::{ use crate::{
api::{limits::LimitType, schemas::RegisterSchema, types::ErrorResponse}, api::{limits::LimitType, schemas::RegisterSchema, types::ErrorResponse},
errors::InstanceServerError, errors::InstanceServerError,
instance::{Instance, Token}, instance::Instance,
}; };
impl Instance { impl Instance {
@ -19,7 +19,7 @@ pub mod register {
pub async fn register_account( pub async fn register_account(
&mut self, &mut self,
register_schema: &RegisterSchema, register_schema: &RegisterSchema,
) -> Result<Token, InstanceServerError> { ) -> Result<crate::api::types::User, InstanceServerError> {
let json_schema = json!(register_schema); let json_schema = json!(register_schema);
let limited_requester = &mut self.requester; let limited_requester = &mut self.requester;
let client = Client::new(); let client = Client::new();
@ -55,9 +55,25 @@ pub mod register {
} }
return Err(InstanceServerError::InvalidFormBodyError { error_type, error }); return Err(InstanceServerError::InvalidFormBodyError { error_type, error });
} }
Ok(Token { let user_object = self
token: response_text_string, .get_user(response_text_string.clone(), None)
}) .await
.unwrap();
let settings = crate::api::types::User::get_settings(
&response_text_string,
&self.urls.get_api().to_string(),
&mut self.limits,
)
.await
.unwrap();
let user: crate::api::types::User = crate::api::types::User::new(
self,
response_text_string.clone(),
cloned_limits,
settings,
Some(user_object),
);
Ok(user)
} }
} }
} }
@ -117,7 +133,7 @@ mod test {
AuthUsername::new("Hiiii".to_string()).unwrap(), AuthUsername::new("Hiiii".to_string()).unwrap(),
Some(AuthPassword::new("mysupersecurepass123!".to_string()).unwrap()), Some(AuthPassword::new("mysupersecurepass123!".to_string()).unwrap()),
true, true,
Some(AuthEmail::new("random978234@aaaa.xyz".to_string()).unwrap()), Some(AuthEmail::new("three12@aaaa.xyz".to_string()).unwrap()),
None, None,
None, None,
Some("2000-01-01".to_string()), Some("2000-01-01".to_string()),