From 32503078d791e2505f16f46adc6ce70acf7b8cbf Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Wed, 7 Jun 2023 23:03:24 +0200 Subject: [PATCH] Implement RoleObject::get_all() --- src/api/guilds/roles.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/api/guilds/roles.rs diff --git a/src/api/guilds/roles.rs b/src/api/guilds/roles.rs new file mode 100644 index 0000000..91d0923 --- /dev/null +++ b/src/api/guilds/roles.rs @@ -0,0 +1,39 @@ +use reqwest::Client; +use serde_json::from_str; + +use crate::{ + instance::UserMeta, + limit::LimitedRequester, + types::{self, RoleObject}, +}; + +impl types::RoleObject { + pub async fn get_all( + user: &mut UserMeta, + guild_id: &str, + ) -> Result>, crate::errors::InstanceServerError> { + let mut belongs_to = user.belongs_to.borrow_mut(); + let url = format!("{}/guilds/{}/roles/", belongs_to.urls.get_api(), guild_id); + let request = Client::new().get(url).bearer_auth(user.token()); + let requester = match LimitedRequester::new() + .await + .send_request( + request, + crate::api::limits::LimitType::Guild, + &mut belongs_to.limits, + &mut user.limits, + ) + .await + { + Ok(request) => request, + Err(e) => return Err(e), + }; + let roles: Vec = from_str(&requester.text().await.unwrap()).unwrap(); + + if roles.is_empty() { + return Ok(None); + } + + Ok(Some(roles)) + } +}