Refactor permissions.rs to use api::common

This commit is contained in:
Flori Weber 2023-06-11 17:56:29 +02:00
parent 90ad75ae30
commit c479db36fb
No known key found for this signature in database
GPG Key ID: 0ACD574FCF5226CF
1 changed files with 16 additions and 25 deletions

View File

@ -2,6 +2,7 @@ use reqwest::Client;
use serde_json::to_string;
use crate::{
api::handle_request,
errors::ChorusLibError,
instance::UserMeta,
limit::LimitedRequester,
@ -25,13 +26,14 @@ impl types::Channel {
channel_id: &str,
overwrite: PermissionOverwrite,
) -> Option<ChorusLibError> {
let mut belongs_to = user.belongs_to.borrow_mut();
let belongs_to = user.belongs_to.borrow_mut();
let url = format!(
"{}/channels/{}/permissions/{}",
belongs_to.urls.get_api(),
channel_id,
overwrite.id
);
drop(belongs_to);
let body = match to_string(&overwrite) {
Ok(string) => string,
Err(e) => {
@ -41,17 +43,12 @@ impl types::Channel {
}
};
let request = Client::new().put(url).bearer_auth(user.token()).body(body);
LimitedRequester::new()
.await
.send_request(
request,
crate::api::limits::LimitType::Channel,
&mut belongs_to.limits,
&mut user.limits,
)
.await
.unwrap();
None
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
Ok(_) => None,
Err(e) => Some(ChorusLibError::InvalidResponseError {
error: e.to_string(),
}),
}
}
/// Deletes a permission overwrite for a channel.
@ -70,26 +67,20 @@ impl types::Channel {
channel_id: &str,
overwrite_id: &str,
) -> Option<ChorusLibError> {
let mut belongs_to = user.belongs_to.borrow_mut();
let belongs_to = user.belongs_to.borrow_mut();
let url = format!(
"{}/channels/{}/permissions/{}",
belongs_to.urls.get_api(),
channel_id,
overwrite_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::Channel,
&mut belongs_to.limits,
&mut user.limits,
)
.await;
if response.is_err() {
return Some(response.err().unwrap());
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
Ok(_) => None,
Err(e) => Some(ChorusLibError::InvalidResponseError {
error: e.to_string(),
}),
}
None
}
}