From aacba2d2a2c15919f3af8e2cc23c87f372fdb393 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Fri, 21 Apr 2023 18:20:57 +0200 Subject: [PATCH] impl register --- src/api/auth/register.rs | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/api/auth/register.rs b/src/api/auth/register.rs index cea10d2..282614b 100644 --- a/src/api/auth/register.rs +++ b/src/api/auth/register.rs @@ -3,16 +3,40 @@ pub mod register { use reqwest::Client; use serde_json::json; - use crate::{api::schemas::schemas::RegisterSchema, instance::Instance}; + use crate::{ + api::{limits::LimitType, schemas::schemas::RegisterSchema}, + errors::InstanceServerError, + instance::{Instance, Token}, + }; impl Instance { - pub fn register(&mut self, register_schema: &RegisterSchema) { + /** + Registers a new user on the Spacebar server. + # Arguments + * `register_schema` - The [`RegisterSchema`] that contains all the information that is needed to register a new user. + # Errors + * [`InstanceServerError`] - If the server does not respond. + */ + pub async fn register( + &mut self, + register_schema: &RegisterSchema, + ) -> Result { let json_schema = json!(register_schema); - let limited_requester = &self.requester; + let limited_requester = &mut self.requester; let client = Client::new(); let endpoint_url = self.urls.get_api().to_string() + "/auth/register"; let request_builder = client.post(endpoint_url).body(json_schema.to_string()); - // TODO + let response = limited_requester + .send_request(request_builder, LimitType::AuthRegister) + .await; + if response.is_none() { + return Err(InstanceServerError::NoResponse); + } + let token = match response.unwrap().text().await { + Ok(token) => token, + Err(_) => return Err(InstanceServerError::NoResponse), + }; + return Ok(Token { token }); } } }