Merge branch 'main' into feature/relationships
This commit is contained in:
commit
7562a07a50
|
@ -63,7 +63,7 @@ impl Instance {
|
||||||
UserMeta::get_settings(&token, &self.urls.get_api().to_string(), &mut self.limits)
|
UserMeta::get_settings(&token, &self.urls.get_api().to_string(), &mut self.limits)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let user: UserMeta = UserMeta::new(
|
let user = UserMeta::new(
|
||||||
Rc::new(RefCell::new(self.clone())),
|
Rc::new(RefCell::new(self.clone())),
|
||||||
token.clone(),
|
token.clone(),
|
||||||
cloned_limits,
|
cloned_limits,
|
||||||
|
|
|
@ -10,9 +10,7 @@ use crate::{
|
||||||
|
|
||||||
impl Channel {
|
impl Channel {
|
||||||
pub async fn get(user: &mut UserMeta, channel_id: &str) -> Result<Channel, ChorusLibError> {
|
pub async fn get(user: &mut UserMeta, channel_id: &str) -> Result<Channel, ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow_mut();
|
let url = user.belongs_to.borrow_mut().urls.get_api().to_string();
|
||||||
let url = belongs_to.urls.get_api().to_string();
|
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.get(format!("{}/channels/{}/", url, channel_id))
|
.get(format!("{}/channels/{}/", url, channel_id))
|
||||||
.bearer_auth(user.token());
|
.bearer_auth(user.token());
|
||||||
|
@ -46,15 +44,13 @@ impl Channel {
|
||||||
///
|
///
|
||||||
/// An `Option` that contains an `ChorusLibError` if an error occurred during the request, or `None` if the request was successful.
|
/// An `Option` that contains an `ChorusLibError` if an error occurred during the request, or `None` if the request was successful.
|
||||||
pub async fn delete(self, user: &mut UserMeta) -> Option<ChorusLibError> {
|
pub async fn delete(self, user: &mut UserMeta) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow_mut();
|
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.delete(format!(
|
.delete(format!(
|
||||||
"{}/channels/{}/",
|
"{}/channels/{}/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow_mut().urls.get_api(),
|
||||||
self.id.to_string()
|
self.id.to_string()
|
||||||
))
|
))
|
||||||
.bearer_auth(user.token());
|
.bearer_auth(user.token());
|
||||||
drop(belongs_to);
|
|
||||||
let response =
|
let response =
|
||||||
common::handle_request(request, user, crate::api::limits::LimitType::Channel).await;
|
common::handle_request(request, user, crate::api::limits::LimitType::Channel).await;
|
||||||
response.err()
|
response.err()
|
||||||
|
@ -79,16 +75,14 @@ impl Channel {
|
||||||
channel_id: &str,
|
channel_id: &str,
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
) -> Result<Channel, ChorusLibError> {
|
) -> Result<Channel, ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.patch(format!(
|
.patch(format!(
|
||||||
"{}/channels/{}/",
|
"{}/channels/{}/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
channel_id
|
channel_id
|
||||||
))
|
))
|
||||||
.bearer_auth(user.token())
|
.bearer_auth(user.token())
|
||||||
.body(to_string(&modify_data).unwrap());
|
.body(to_string(&modify_data).unwrap());
|
||||||
drop(belongs_to);
|
|
||||||
let channel = common::deserialize_response::<Channel>(
|
let channel = common::deserialize_response::<Channel>(
|
||||||
request,
|
request,
|
||||||
user,
|
user,
|
||||||
|
|
|
@ -25,9 +25,7 @@ impl Message {
|
||||||
message: &mut MessageSendSchema,
|
message: &mut MessageSendSchema,
|
||||||
files: Option<Vec<PartialDiscordFileAttachment>>,
|
files: Option<Vec<PartialDiscordFileAttachment>>,
|
||||||
) -> Result<Message, crate::errors::ChorusLibError> {
|
) -> Result<Message, crate::errors::ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
let url_api = user.belongs_to.borrow().urls.get_api().to_string();
|
||||||
let url_api = belongs_to.urls.get_api().to_string();
|
|
||||||
drop(belongs_to);
|
|
||||||
|
|
||||||
if files.is_none() {
|
if files.is_none() {
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
|
|
|
@ -25,14 +25,14 @@ impl types::Channel {
|
||||||
channel_id: &str,
|
channel_id: &str,
|
||||||
overwrite: PermissionOverwrite,
|
overwrite: PermissionOverwrite,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow_mut();
|
let url = {
|
||||||
let url = format!(
|
format!(
|
||||||
"{}/channels/{}/permissions/{}",
|
"{}/channels/{}/permissions/{}",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow_mut().urls.get_api(),
|
||||||
channel_id,
|
channel_id,
|
||||||
overwrite.id
|
overwrite.id
|
||||||
);
|
)
|
||||||
drop(belongs_to);
|
};
|
||||||
let body = match to_string(&overwrite) {
|
let body = match to_string(&overwrite) {
|
||||||
Ok(string) => string,
|
Ok(string) => string,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -66,14 +66,12 @@ impl types::Channel {
|
||||||
channel_id: &str,
|
channel_id: &str,
|
||||||
overwrite_id: &str,
|
overwrite_id: &str,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow_mut();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/permissions/{}",
|
"{}/channels/{}/permissions/{}",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow_mut().urls.get_api(),
|
||||||
channel_id,
|
channel_id,
|
||||||
overwrite_id
|
overwrite_id
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().delete(url).bearer_auth(user.token());
|
let request = Client::new().delete(url).bearer_auth(user.token());
|
||||||
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
|
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
|
||||||
Ok(_) => None,
|
Ok(_) => None,
|
||||||
|
|
|
@ -31,14 +31,12 @@ impl ReactionMeta {
|
||||||
See [https://discord.com/developers/docs/resources/channel#delete-all-reactions](https://discord.com/developers/docs/resources/channel#delete-all-reactions)
|
See [https://discord.com/developers/docs/resources/channel#delete-all-reactions](https://discord.com/developers/docs/resources/channel#delete-all-reactions)
|
||||||
*/
|
*/
|
||||||
pub async fn delete_all(&self, user: &mut UserMeta) -> Option<ChorusLibError> {
|
pub async fn delete_all(&self, user: &mut UserMeta) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/",
|
"{}/channels/{}/messages/{}/reactions/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
self.channel_id,
|
self.channel_id,
|
||||||
self.message_id
|
self.message_id
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().delete(url).bearer_auth(user.token());
|
let request = Client::new().delete(url).bearer_auth(user.token());
|
||||||
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
|
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
|
||||||
Ok(_) => None,
|
Ok(_) => None,
|
||||||
|
@ -64,15 +62,13 @@ impl ReactionMeta {
|
||||||
See [https://discord.com/developers/docs/resources/channel#get-reactions](https://discord.com/developers/docs/resources/channel#get-reactions)
|
See [https://discord.com/developers/docs/resources/channel#get-reactions](https://discord.com/developers/docs/resources/channel#get-reactions)
|
||||||
*/
|
*/
|
||||||
pub async fn get(&self, emoji: &str, user: &mut UserMeta) -> Option<ChorusLibError> {
|
pub async fn get(&self, emoji: &str, user: &mut UserMeta) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/",
|
"{}/channels/{}/messages/{}/reactions/{}/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
self.channel_id,
|
self.channel_id,
|
||||||
self.message_id,
|
self.message_id,
|
||||||
emoji
|
emoji
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().get(url).bearer_auth(user.token());
|
let request = Client::new().get(url).bearer_auth(user.token());
|
||||||
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
|
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
|
||||||
Ok(_) => None,
|
Ok(_) => None,
|
||||||
|
@ -100,15 +96,13 @@ impl ReactionMeta {
|
||||||
See [https://discord.com/developers/docs/resources/channel#delete-all-reactions-for-emoji](https://discord.com/developers/docs/resources/channel#delete-all-reactions-for-emoji)
|
See [https://discord.com/developers/docs/resources/channel#delete-all-reactions-for-emoji](https://discord.com/developers/docs/resources/channel#delete-all-reactions-for-emoji)
|
||||||
*/
|
*/
|
||||||
pub async fn delete_emoji(&self, emoji: &str, user: &mut UserMeta) -> Option<ChorusLibError> {
|
pub async fn delete_emoji(&self, emoji: &str, user: &mut UserMeta) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/",
|
"{}/channels/{}/messages/{}/reactions/{}/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
self.channel_id,
|
self.channel_id,
|
||||||
self.message_id,
|
self.message_id,
|
||||||
emoji
|
emoji
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().delete(url).bearer_auth(user.token());
|
let request = Client::new().delete(url).bearer_auth(user.token());
|
||||||
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
|
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
|
||||||
Ok(_) => None,
|
Ok(_) => None,
|
||||||
|
@ -140,15 +134,13 @@ impl ReactionMeta {
|
||||||
See [https://discord.com/developers/docs/resources/channel#create-reaction](https://discord.com/developers/docs/resources/channel#create-reaction)
|
See [https://discord.com/developers/docs/resources/channel#create-reaction](https://discord.com/developers/docs/resources/channel#create-reaction)
|
||||||
*/
|
*/
|
||||||
pub async fn create(&self, emoji: &str, user: &mut UserMeta) -> Option<ChorusLibError> {
|
pub async fn create(&self, emoji: &str, user: &mut UserMeta) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/@me/",
|
"{}/channels/{}/messages/{}/reactions/{}/@me/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
self.channel_id,
|
self.channel_id,
|
||||||
self.message_id,
|
self.message_id,
|
||||||
emoji
|
emoji
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().put(url).bearer_auth(user.token());
|
let request = Client::new().put(url).bearer_auth(user.token());
|
||||||
handle_request_as_option(request, user, crate::api::limits::LimitType::Channel).await
|
handle_request_as_option(request, user, crate::api::limits::LimitType::Channel).await
|
||||||
}
|
}
|
||||||
|
@ -171,15 +163,13 @@ impl ReactionMeta {
|
||||||
See [https://discord.com/developers/docs/resources/channel#delete-own-reaction](https://discord.com/developers/docs/resources/channel#delete-own-reaction)
|
See [https://discord.com/developers/docs/resources/channel#delete-own-reaction](https://discord.com/developers/docs/resources/channel#delete-own-reaction)
|
||||||
*/
|
*/
|
||||||
pub async fn remove(&self, emoji: &str, user: &mut UserMeta) -> Option<ChorusLibError> {
|
pub async fn remove(&self, emoji: &str, user: &mut UserMeta) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/@me/",
|
"{}/channels/{}/messages/{}/reactions/{}/@me/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
self.channel_id,
|
self.channel_id,
|
||||||
self.message_id,
|
self.message_id,
|
||||||
emoji
|
emoji
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().delete(url).bearer_auth(user.token());
|
let request = Client::new().delete(url).bearer_auth(user.token());
|
||||||
handle_request_as_option(request, user, crate::api::limits::LimitType::Channel).await
|
handle_request_as_option(request, user, crate::api::limits::LimitType::Channel).await
|
||||||
}
|
}
|
||||||
|
@ -210,16 +200,14 @@ impl ReactionMeta {
|
||||||
emoji: &str,
|
emoji: &str,
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/{}",
|
"{}/channels/{}/messages/{}/reactions/{}/{}",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
self.channel_id,
|
self.channel_id,
|
||||||
self.message_id,
|
self.message_id,
|
||||||
emoji,
|
emoji,
|
||||||
user_id
|
user_id
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().delete(url).bearer_auth(user.token());
|
let request = Client::new().delete(url).bearer_auth(user.token());
|
||||||
handle_request_as_option(request, user, crate::api::limits::LimitType::Channel).await
|
handle_request_as_option(request, user, crate::api::limits::LimitType::Channel).await
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,11 +12,10 @@ pub async fn handle_request(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
limit_type: LimitType,
|
limit_type: LimitType,
|
||||||
) -> Result<reqwest::Response, crate::errors::ChorusLibError> {
|
) -> Result<reqwest::Response, crate::errors::ChorusLibError> {
|
||||||
let mut belongs_to = user.belongs_to.borrow_mut();
|
|
||||||
LimitedRequester::send_request(
|
LimitedRequester::send_request(
|
||||||
request,
|
request,
|
||||||
limit_type,
|
limit_type,
|
||||||
&mut belongs_to.limits,
|
&mut user.belongs_to.borrow_mut().limits,
|
||||||
&mut user.limits,
|
&mut user.limits,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
|
|
|
@ -32,9 +32,7 @@ impl Guild {
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_create_schema: GuildCreateSchema,
|
guild_create_schema: GuildCreateSchema,
|
||||||
) -> Result<Guild, ChorusLibError> {
|
) -> Result<Guild, ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
let url = format!("{}/guilds/", user.belongs_to.borrow().urls.get_api());
|
||||||
let url = format!("{}/guilds/", belongs_to.urls.get_api());
|
|
||||||
drop(belongs_to);
|
|
||||||
let request = reqwest::Client::new()
|
let request = reqwest::Client::new()
|
||||||
.post(url.clone())
|
.post(url.clone())
|
||||||
.bearer_auth(user.token.clone())
|
.bearer_auth(user.token.clone())
|
||||||
|
@ -67,9 +65,11 @@ impl Guild {
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
pub async fn delete(user: &mut UserMeta, guild_id: &str) -> Option<ChorusLibError> {
|
pub async fn delete(user: &mut UserMeta, guild_id: &str) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
let url = format!(
|
||||||
let url = format!("{}/guilds/{}/delete/", belongs_to.urls.get_api(), guild_id);
|
"{}/guilds/{}/delete/",
|
||||||
drop(belongs_to);
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
|
guild_id
|
||||||
|
);
|
||||||
let request = reqwest::Client::new()
|
let request = reqwest::Client::new()
|
||||||
.post(url.clone())
|
.post(url.clone())
|
||||||
.bearer_auth(user.token.clone());
|
.bearer_auth(user.token.clone());
|
||||||
|
@ -116,15 +116,13 @@ impl Guild {
|
||||||
/// * `limits_instance` - A mutable reference to a `Limits` struct containing the instance's rate limits.
|
/// * `limits_instance` - A mutable reference to a `Limits` struct containing the instance's rate limits.
|
||||||
///
|
///
|
||||||
pub async fn channels(&self, user: &mut UserMeta) -> Result<Vec<Channel>, ChorusLibError> {
|
pub async fn channels(&self, user: &mut UserMeta) -> Result<Vec<Channel>, ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.get(format!(
|
.get(format!(
|
||||||
"{}/guilds/{}/channels/",
|
"{}/guilds/{}/channels/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
self.id.to_string()
|
self.id.to_string()
|
||||||
))
|
))
|
||||||
.bearer_auth(user.token());
|
.bearer_auth(user.token());
|
||||||
drop(belongs_to);
|
|
||||||
let result = handle_request(request, user, crate::api::limits::LimitType::Channel)
|
let result = handle_request(request, user, crate::api::limits::LimitType::Channel)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
|
@ -24,14 +24,12 @@ impl types::GuildMember {
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
member_id: &str,
|
member_id: &str,
|
||||||
) -> Result<types::GuildMember, ChorusLibError> {
|
) -> Result<types::GuildMember, ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/members/{}/",
|
"{}/guilds/{}/members/{}/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
guild_id,
|
guild_id,
|
||||||
member_id
|
member_id
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().get(url).bearer_auth(user.token());
|
let request = Client::new().get(url).bearer_auth(user.token());
|
||||||
deserialize_response::<types::GuildMember>(
|
deserialize_response::<types::GuildMember>(
|
||||||
request,
|
request,
|
||||||
|
@ -59,15 +57,13 @@ impl types::GuildMember {
|
||||||
member_id: &str,
|
member_id: &str,
|
||||||
role_id: &str,
|
role_id: &str,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Option<ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/members/{}/roles/{}/",
|
"{}/guilds/{}/members/{}/roles/{}/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
guild_id,
|
guild_id,
|
||||||
member_id,
|
member_id,
|
||||||
role_id
|
role_id
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().put(url).bearer_auth(user.token());
|
let request = Client::new().put(url).bearer_auth(user.token());
|
||||||
handle_request_as_option(request, user, crate::api::limits::LimitType::Guild).await
|
handle_request_as_option(request, user, crate::api::limits::LimitType::Guild).await
|
||||||
}
|
}
|
||||||
|
@ -90,15 +86,13 @@ impl types::GuildMember {
|
||||||
member_id: &str,
|
member_id: &str,
|
||||||
role_id: &str,
|
role_id: &str,
|
||||||
) -> Option<crate::errors::ChorusLibError> {
|
) -> Option<crate::errors::ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/members/{}/roles/{}/",
|
"{}/guilds/{}/members/{}/roles/{}/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
guild_id,
|
guild_id,
|
||||||
member_id,
|
member_id,
|
||||||
role_id
|
role_id
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().delete(url).bearer_auth(user.token());
|
let request = Client::new().delete(url).bearer_auth(user.token());
|
||||||
handle_request_as_option(request, user, crate::api::limits::LimitType::Guild).await
|
handle_request_as_option(request, user, crate::api::limits::LimitType::Guild).await
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,9 +27,11 @@ impl types::RoleObject {
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
) -> Result<Option<Vec<RoleObject>>, ChorusLibError> {
|
) -> Result<Option<Vec<RoleObject>>, ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
let url = format!(
|
||||||
let url = format!("{}/guilds/{}/roles/", belongs_to.urls.get_api(), guild_id);
|
"{}/guilds/{}/roles/",
|
||||||
drop(belongs_to);
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
|
guild_id
|
||||||
|
);
|
||||||
let request = Client::new().get(url).bearer_auth(user.token());
|
let request = Client::new().get(url).bearer_auth(user.token());
|
||||||
let roles = deserialize_response::<Vec<RoleObject>>(
|
let roles = deserialize_response::<Vec<RoleObject>>(
|
||||||
request,
|
request,
|
||||||
|
@ -64,14 +66,12 @@ impl types::RoleObject {
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
role_id: &str,
|
role_id: &str,
|
||||||
) -> Result<RoleObject, ChorusLibError> {
|
) -> Result<RoleObject, ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/roles/{}/",
|
"{}/guilds/{}/roles/{}/",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
guild_id,
|
guild_id,
|
||||||
role_id
|
role_id
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().get(url).bearer_auth(user.token());
|
let request = Client::new().get(url).bearer_auth(user.token());
|
||||||
deserialize_response(request, user, crate::api::limits::LimitType::Guild).await
|
deserialize_response(request, user, crate::api::limits::LimitType::Guild).await
|
||||||
}
|
}
|
||||||
|
@ -96,17 +96,16 @@ impl types::RoleObject {
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
role_create_schema: RoleCreateModifySchema,
|
role_create_schema: RoleCreateModifySchema,
|
||||||
) -> Result<RoleObject, ChorusLibError> {
|
) -> Result<RoleObject, ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
let url = format!(
|
||||||
let url = format!("{}/guilds/{}/roles/", belongs_to.urls.get_api(), guild_id);
|
"{}/guilds/{}/roles/",
|
||||||
drop(belongs_to);
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
let body = match to_string::<RoleCreateModifySchema>(&role_create_schema) {
|
guild_id
|
||||||
Ok(string) => string,
|
);
|
||||||
Err(e) => {
|
let body = to_string::<RoleCreateModifySchema>(&role_create_schema).map_err(|e| {
|
||||||
return Err(ChorusLibError::FormCreationError {
|
ChorusLibError::FormCreationError {
|
||||||
error: e.to_string(),
|
error: e.to_string(),
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
})?;
|
||||||
let request = Client::new().post(url).bearer_auth(user.token()).body(body);
|
let request = Client::new().post(url).bearer_auth(user.token()).body(body);
|
||||||
deserialize_response(request, user, crate::api::limits::LimitType::Guild).await
|
deserialize_response(request, user, crate::api::limits::LimitType::Guild).await
|
||||||
}
|
}
|
||||||
|
@ -131,17 +130,16 @@ impl types::RoleObject {
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
role_position_update_schema: types::RolePositionUpdateSchema,
|
role_position_update_schema: types::RolePositionUpdateSchema,
|
||||||
) -> Result<RoleObject, ChorusLibError> {
|
) -> Result<RoleObject, ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
let url = format!(
|
||||||
let url = format!("{}/guilds/{}/roles/", belongs_to.urls.get_api(), guild_id);
|
"{}/guilds/{}/roles/",
|
||||||
let body = match to_string(&role_position_update_schema) {
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
Ok(body) => body,
|
guild_id
|
||||||
Err(e) => {
|
);
|
||||||
return Err(ChorusLibError::FormCreationError {
|
let body = to_string(&role_position_update_schema).map_err(|e| {
|
||||||
|
ChorusLibError::FormCreationError {
|
||||||
error: e.to_string(),
|
error: e.to_string(),
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
})?;
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.patch(url)
|
.patch(url)
|
||||||
.bearer_auth(user.token())
|
.bearer_auth(user.token())
|
||||||
|
@ -172,22 +170,17 @@ impl types::RoleObject {
|
||||||
role_id: &str,
|
role_id: &str,
|
||||||
role_create_schema: RoleCreateModifySchema,
|
role_create_schema: RoleCreateModifySchema,
|
||||||
) -> Result<RoleObject, ChorusLibError> {
|
) -> Result<RoleObject, ChorusLibError> {
|
||||||
let belongs_to = user.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/roles/{}",
|
"{}/guilds/{}/roles/{}",
|
||||||
belongs_to.urls.get_api(),
|
user.belongs_to.borrow().urls.get_api(),
|
||||||
guild_id,
|
guild_id,
|
||||||
role_id
|
role_id
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
let body = to_string::<RoleCreateModifySchema>(&role_create_schema).map_err(|e| {
|
||||||
let body = match to_string::<RoleCreateModifySchema>(&role_create_schema) {
|
ChorusLibError::FormCreationError {
|
||||||
Ok(string) => string,
|
|
||||||
Err(e) => {
|
|
||||||
return Err(ChorusLibError::FormCreationError {
|
|
||||||
error: e.to_string(),
|
error: e.to_string(),
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
})?;
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.patch(url)
|
.patch(url)
|
||||||
.bearer_auth(user.token())
|
.bearer_auth(user.token())
|
||||||
|
|
|
@ -21,13 +21,11 @@ impl UserMeta {
|
||||||
&mut self,
|
&mut self,
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
) -> Result<Vec<types::PublicUser>, ChorusLibError> {
|
) -> Result<Vec<types::PublicUser>, ChorusLibError> {
|
||||||
let belongs_to = self.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/users/{}/relationships/",
|
"{}/users/{}/relationships/",
|
||||||
belongs_to.urls.get_api(),
|
self.belongs_to.borrow().urls.get_api(),
|
||||||
user_id
|
user_id
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().get(url).bearer_auth(self.token());
|
let request = Client::new().get(url).bearer_auth(self.token());
|
||||||
deserialize_response::<Vec<types::PublicUser>>(
|
deserialize_response::<Vec<types::PublicUser>>(
|
||||||
request,
|
request,
|
||||||
|
@ -42,9 +40,10 @@ impl UserMeta {
|
||||||
/// # Returns
|
/// # Returns
|
||||||
/// This function returns a [`Result<Vec<types::Relationship>, ChorusLibError>`].
|
/// This function returns a [`Result<Vec<types::Relationship>, ChorusLibError>`].
|
||||||
pub async fn get_relationships(&mut self) -> Result<Vec<types::Relationship>, ChorusLibError> {
|
pub async fn get_relationships(&mut self) -> Result<Vec<types::Relationship>, ChorusLibError> {
|
||||||
let belongs_to = self.belongs_to.borrow();
|
let url = format!(
|
||||||
let url = format!("{}/users/@me/relationships/", belongs_to.urls.get_api(),);
|
"{}/users/@me/relationships/",
|
||||||
drop(belongs_to);
|
self.belongs_to.borrow().urls.get_api()
|
||||||
|
);
|
||||||
let request = Client::new().get(url).bearer_auth(self.token());
|
let request = Client::new().get(url).bearer_auth(self.token());
|
||||||
deserialize_response::<Vec<types::Relationship>>(
|
deserialize_response::<Vec<types::Relationship>>(
|
||||||
request,
|
request,
|
||||||
|
@ -66,9 +65,10 @@ impl UserMeta {
|
||||||
&mut self,
|
&mut self,
|
||||||
schema: types::FriendRequestSendSchema,
|
schema: types::FriendRequestSendSchema,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Option<ChorusLibError> {
|
||||||
let belongs_to = self.belongs_to.borrow();
|
let url = format!(
|
||||||
let url = format!("{}/users/@me/relationships/", belongs_to.urls.get_api());
|
"{}/users/@me/relationships/",
|
||||||
drop(belongs_to);
|
self.belongs_to.borrow().urls.get_api()
|
||||||
|
);
|
||||||
let body = to_string(&schema).unwrap();
|
let body = to_string(&schema).unwrap();
|
||||||
let request = Client::new().post(url).bearer_auth(self.token()).body(body);
|
let request = Client::new().post(url).bearer_auth(self.token()).body(body);
|
||||||
handle_request_as_option(request, self, crate::api::limits::LimitType::Global).await
|
handle_request_as_option(request, self, crate::api::limits::LimitType::Global).await
|
||||||
|
@ -93,9 +93,7 @@ impl UserMeta {
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
relationship_type: RelationshipType,
|
relationship_type: RelationshipType,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Option<ChorusLibError> {
|
||||||
let belongs_to = self.belongs_to.borrow();
|
let api_url = self.belongs_to.borrow().urls.api.clone();
|
||||||
let api_url = belongs_to.urls.api.clone();
|
|
||||||
drop(belongs_to);
|
|
||||||
match relationship_type {
|
match relationship_type {
|
||||||
RelationshipType::None => {
|
RelationshipType::None => {
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
|
@ -140,13 +138,11 @@ impl UserMeta {
|
||||||
/// # Returns
|
/// # Returns
|
||||||
/// This function returns an [`Option`] that holds a [`ChorusLibError`] if the request fails.
|
/// This function returns an [`Option`] that holds a [`ChorusLibError`] if the request fails.
|
||||||
pub async fn remove_relationship(&mut self, user_id: &str) -> Option<ChorusLibError> {
|
pub async fn remove_relationship(&mut self, user_id: &str) -> Option<ChorusLibError> {
|
||||||
let belongs_to = self.belongs_to.borrow();
|
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/users/@me/relationships/{}/",
|
"{}/users/@me/relationships/{}/",
|
||||||
belongs_to.urls.get_api(),
|
self.belongs_to.borrow().urls.get_api(),
|
||||||
user_id
|
user_id
|
||||||
);
|
);
|
||||||
drop(belongs_to);
|
|
||||||
let request = Client::new().post(url).bearer_auth(self.token());
|
let request = Client::new().post(url).bearer_auth(self.token());
|
||||||
handle_request_as_option(request, self, crate::api::limits::LimitType::Global).await
|
handle_request_as_option(request, self, crate::api::limits::LimitType::Global).await
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,11 +76,12 @@ impl UserMeta {
|
||||||
///
|
///
|
||||||
/// Returns `None` if the user was successfully deleted, or an `ChorusLibError` if an error occurred.
|
/// Returns `None` if the user was successfully deleted, or an `ChorusLibError` if an error occurred.
|
||||||
pub async fn delete(mut self) -> Option<ChorusLibError> {
|
pub async fn delete(mut self) -> Option<ChorusLibError> {
|
||||||
let belongs_to = self.belongs_to.borrow();
|
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.post(format!("{}/users/@me/delete/", belongs_to.urls.get_api()))
|
.post(format!(
|
||||||
|
"{}/users/@me/delete/",
|
||||||
|
self.belongs_to.borrow().urls.get_api()
|
||||||
|
))
|
||||||
.bearer_auth(self.token());
|
.bearer_auth(self.token());
|
||||||
drop(belongs_to);
|
|
||||||
handle_request_as_option(request, &mut self, crate::api::limits::LimitType::Ip).await
|
handle_request_as_option(request, &mut self, crate::api::limits::LimitType::Ip).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue