Refactor member.rs to use api::common
This commit is contained in:
parent
d10f268ae5
commit
893d1be98a
|
@ -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<types::GuildMember, ChorusLibError> {
|
||||
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::<types::GuildMember>(&response_text);
|
||||
if member.is_err() {
|
||||
return Err(ChorusLibError::InvalidResponseError {
|
||||
error: member.err().unwrap().to_string(),
|
||||
});
|
||||
}
|
||||
Ok(member.unwrap())
|
||||
deserialize_response::<types::GuildMember>(
|
||||
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<crate::errors::ChorusLibError> {
|
||||
let mut belongs_to = user.belongs_to.borrow_mut();
|
||||
) -> Option<ChorusLibError> {
|
||||
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<crate::errors::ChorusLibError> {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue