From 893d1be98a5940406c088b38181384507cf8659b Mon Sep 17 00:00:00 2001 From: Flori Weber Date: Sun, 11 Jun 2023 19:30:15 +0200 Subject: [PATCH] Refactor member.rs to use api::common --- src/api/guilds/member.rs | 80 +++++++++++----------------------------- 1 file changed, 22 insertions(+), 58 deletions(-) diff --git a/src/api/guilds/member.rs b/src/api/guilds/member.rs index 7b0f5d5..5f09a3c 100644 --- a/src/api/guilds/member.rs +++ b/src/api/guilds/member.rs @@ -1,7 +1,13 @@ use reqwest::Client; use serde_json::from_str; -use crate::{errors::ChorusLibError, instance::UserMeta, limit::LimitedRequester, types}; +use crate::{ + api::{deserialize_response, handle_request_as_option}, + errors::ChorusLibError, + instance::UserMeta, + limit::LimitedRequester, + types, +}; impl types::GuildMember { /// Retrieves a guild member by their ID. @@ -20,39 +26,21 @@ impl types::GuildMember { guild_id: &str, member_id: &str, ) -> Result { - let mut belongs_to = user.belongs_to.borrow_mut(); + let belongs_to = user.belongs_to.borrow(); let url = format!( "{}/guilds/{}/members/{}/", belongs_to.urls.get_api(), guild_id, member_id ); + drop(belongs_to); let request = Client::new().get(url).bearer_auth(user.token()); - let response = LimitedRequester::new() - .await - .send_request( - request, - crate::api::limits::LimitType::Guild, - &mut belongs_to.limits, - &mut user.limits, - ) - .await - .unwrap(); - let response_text = match response.text().await { - Ok(string) => string, - Err(e) => { - return Err(ChorusLibError::InvalidResponseError { - error: e.to_string(), - }); - } - }; - let member = from_str::(&response_text); - if member.is_err() { - return Err(ChorusLibError::InvalidResponseError { - error: member.err().unwrap().to_string(), - }); - } - Ok(member.unwrap()) + deserialize_response::( + request, + user, + crate::api::limits::LimitType::Guild, + ) + .await } /// Adds a role to a guild member. @@ -72,8 +60,8 @@ impl types::GuildMember { guild_id: &str, member_id: &str, role_id: &str, - ) -> Option { - let mut belongs_to = user.belongs_to.borrow_mut(); + ) -> Option { + let belongs_to = user.belongs_to.borrow(); let url = format!( "{}/guilds/{}/members/{}/roles/{}/", belongs_to.urls.get_api(), @@ -81,21 +69,9 @@ impl types::GuildMember { member_id, role_id ); + drop(belongs_to); let request = Client::new().put(url).bearer_auth(user.token()); - let response = LimitedRequester::new() - .await - .send_request( - request, - crate::api::limits::LimitType::Guild, - &mut belongs_to.limits, - &mut user.limits, - ) - .await; - if response.is_err() { - return Some(response.err().unwrap()); - } else { - return None; - } + handle_request_as_option(request, user, crate::api::limits::LimitType::Guild).await } /// Removes a role from a guild member. @@ -116,7 +92,7 @@ impl types::GuildMember { member_id: &str, role_id: &str, ) -> Option { - let mut belongs_to = user.belongs_to.borrow_mut(); + let belongs_to = user.belongs_to.borrow(); let url = format!( "{}/guilds/{}/members/{}/roles/{}/", belongs_to.urls.get_api(), @@ -124,20 +100,8 @@ impl types::GuildMember { member_id, role_id ); + drop(belongs_to); let request = Client::new().delete(url).bearer_auth(user.token()); - let response = LimitedRequester::new() - .await - .send_request( - request, - crate::api::limits::LimitType::Guild, - &mut belongs_to.limits, - &mut user.limits, - ) - .await; - if response.is_err() { - return Some(response.err().unwrap()); - } else { - return None; - } + handle_request_as_option(request, user, crate::api::limits::LimitType::Guild).await } }