Change Option<ChorusLibError> to Result<(), ChorusLibError>
This commit is contained in:
parent
cafdc287d6
commit
b8d7030ab1
|
@ -42,8 +42,8 @@ impl Channel {
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
///
|
///
|
||||||
/// An `Option` that contains an `ChorusLibError` if an error occurred during the request, or `None` if the request was successful.
|
/// A `Result` that contains a `ChorusLibError` if an error occurred during the request, or `()` if the request was successful.
|
||||||
pub async fn delete(self, user: &mut UserMeta) -> Option<ChorusLibError> {
|
pub async fn delete(self, user: &mut UserMeta) -> Result<(), ChorusLibError> {
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.delete(format!(
|
.delete(format!(
|
||||||
"{}/channels/{}/",
|
"{}/channels/{}/",
|
||||||
|
@ -52,8 +52,9 @@ impl Channel {
|
||||||
))
|
))
|
||||||
.bearer_auth(user.token());
|
.bearer_auth(user.token());
|
||||||
let response =
|
let response =
|
||||||
common::handle_request(request, user, crate::api::limits::LimitType::Channel).await;
|
common::handle_request_as_result(request, user, crate::api::limits::LimitType::Channel)
|
||||||
response.err()
|
.await;
|
||||||
|
response
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Modifies a channel.
|
/// Modifies a channel.
|
||||||
|
|
|
@ -2,7 +2,7 @@ use reqwest::Client;
|
||||||
use serde_json::to_string;
|
use serde_json::to_string;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
api::handle_request,
|
api::{handle_request, handle_request_as_result},
|
||||||
errors::ChorusLibError,
|
errors::ChorusLibError,
|
||||||
instance::UserMeta,
|
instance::UserMeta,
|
||||||
types::{self, PermissionOverwrite},
|
types::{self, PermissionOverwrite},
|
||||||
|
@ -19,12 +19,12 @@ impl types::Channel {
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
///
|
///
|
||||||
/// This function returns [`None`] if the request is successful, otherwise it returns a [`ChorusLibError`] instance.
|
/// This function returns a result that is either [`Ok(())`] if the request is successful, or an [`Err(ChorusLibError)`].
|
||||||
pub async fn edit_permissions(
|
pub async fn edit_permissions(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
channel_id: &str,
|
channel_id: &str,
|
||||||
overwrite: PermissionOverwrite,
|
overwrite: PermissionOverwrite,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Result<(), ChorusLibError> {
|
||||||
let url = {
|
let url = {
|
||||||
format!(
|
format!(
|
||||||
"{}/channels/{}/permissions/{}",
|
"{}/channels/{}/permissions/{}",
|
||||||
|
@ -36,18 +36,13 @@ impl types::Channel {
|
||||||
let body = match to_string(&overwrite) {
|
let body = match to_string(&overwrite) {
|
||||||
Ok(string) => string,
|
Ok(string) => string,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
return Some(ChorusLibError::FormCreationError {
|
return Err(ChorusLibError::FormCreationError {
|
||||||
error: e.to_string(),
|
error: e.to_string(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let request = Client::new().put(url).bearer_auth(user.token()).body(body);
|
let request = Client::new().put(url).bearer_auth(user.token()).body(body);
|
||||||
match handle_request(request, user, crate::api::limits::LimitType::Channel).await {
|
handle_request_as_result(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.
|
/// Deletes a permission overwrite for a channel.
|
||||||
|
@ -60,12 +55,12 @@ impl types::Channel {
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
///
|
///
|
||||||
/// This function returns [`None`] if the request is successful, otherwise it returns a [`ChorusLibError`] instance.
|
/// This function returns a Result that is either [`Ok(())`] if the request is successfulm or an [`Err(ChorusLibError)`].
|
||||||
pub async fn delete_permission(
|
pub async fn delete_permission(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
channel_id: &str,
|
channel_id: &str,
|
||||||
overwrite_id: &str,
|
overwrite_id: &str,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/permissions/{}",
|
"{}/channels/{}/permissions/{}",
|
||||||
user.belongs_to.borrow_mut().urls.api,
|
user.belongs_to.borrow_mut().urls.api,
|
||||||
|
@ -73,11 +68,6 @@ impl types::Channel {
|
||||||
overwrite_id
|
overwrite_id
|
||||||
);
|
);
|
||||||
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 {
|
handle_request_as_result(request, user, crate::api::limits::LimitType::Channel).await
|
||||||
Ok(_) => None,
|
|
||||||
Err(e) => Some(ChorusLibError::InvalidResponseError {
|
|
||||||
error: e.to_string(),
|
|
||||||
}),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
api::{handle_request, handle_request_as_option},
|
api::{handle_request, handle_request_as_result},
|
||||||
errors::ChorusLibError,
|
errors::ChorusLibError,
|
||||||
instance::UserMeta,
|
instance::UserMeta,
|
||||||
types,
|
types,
|
||||||
|
@ -24,13 +24,13 @@ impl ReactionMeta {
|
||||||
* `user` - A mutable reference to a [`UserMeta`] instance.
|
* `user` - A mutable reference to a [`UserMeta`] instance.
|
||||||
|
|
||||||
# Returns
|
# Returns
|
||||||
An `Option` [`crate::errors::ChorusLibError`] if something went wrong.
|
A `Result` [`()`] [`crate::errors::ChorusLibError`] if something went wrong.
|
||||||
Fires a `Message Reaction Remove All` Gateway event.
|
Fires a `Message Reaction Remove All` Gateway event.
|
||||||
|
|
||||||
# Reference
|
# Reference
|
||||||
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) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/",
|
"{}/channels/{}/messages/{}/reactions/",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -38,12 +38,7 @@ impl ReactionMeta {
|
||||||
self.message_id
|
self.message_id
|
||||||
);
|
);
|
||||||
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 {
|
handle_request_as_result(request, user, crate::api::limits::LimitType::Channel).await
|
||||||
Ok(_) => None,
|
|
||||||
Err(e) => Some(ChorusLibError::InvalidResponseError {
|
|
||||||
error: e.to_string(),
|
|
||||||
}),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -56,12 +51,12 @@ impl ReactionMeta {
|
||||||
* `user` - A mutable reference to a [`UserMeta`] instance.
|
* `user` - A mutable reference to a [`UserMeta`] instance.
|
||||||
|
|
||||||
# Returns
|
# Returns
|
||||||
A [`crate::errors::ChorusLibError`] if something went wrong.
|
A Result that is [`Err(crate::errors::ChorusLibError)`] if something went wrong.
|
||||||
|
|
||||||
# Reference
|
# Reference
|
||||||
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) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/",
|
"{}/channels/{}/messages/{}/reactions/{}/",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -70,12 +65,7 @@ impl ReactionMeta {
|
||||||
emoji
|
emoji
|
||||||
);
|
);
|
||||||
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 {
|
handle_request_as_result(request, user, crate::api::limits::LimitType::Channel).await
|
||||||
Ok(_) => None,
|
|
||||||
Err(e) => Some(ChorusLibError::InvalidResponseError {
|
|
||||||
error: e.to_string(),
|
|
||||||
}),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -89,13 +79,17 @@ impl ReactionMeta {
|
||||||
* `user` - A mutable reference to a [`UserMeta`] instance.
|
* `user` - A mutable reference to a [`UserMeta`] instance.
|
||||||
|
|
||||||
# Returns
|
# Returns
|
||||||
A [`crate::errors::ChorusLibError`] if something went wrong.
|
A Result that is [`Err(crate::errors::ChorusLibError)`] if something went wrong.
|
||||||
Fires a `Message Reaction Remove Emoji` Gateway event.
|
Fires a `Message Reaction Remove Emoji` Gateway event.
|
||||||
|
|
||||||
# Reference
|
# Reference
|
||||||
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,
|
||||||
|
) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/",
|
"{}/channels/{}/messages/{}/reactions/{}/",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -104,12 +98,7 @@ impl ReactionMeta {
|
||||||
emoji
|
emoji
|
||||||
);
|
);
|
||||||
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 {
|
handle_request_as_result(request, user, crate::api::limits::LimitType::Channel).await
|
||||||
Ok(_) => None,
|
|
||||||
Err(e) => Some(ChorusLibError::InvalidResponseError {
|
|
||||||
error: e.to_string(),
|
|
||||||
}),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -126,14 +115,12 @@ impl ReactionMeta {
|
||||||
* `user` - A mutable reference to a [`UserMeta`] instance.
|
* `user` - A mutable reference to a [`UserMeta`] instance.
|
||||||
|
|
||||||
# Returns
|
# Returns
|
||||||
A `Result` containing a [`reqwest::Response`] or a [`crate::errors::ChorusLibError`].
|
A `Result` containing [`()`] or a [`crate::errors::ChorusLibError`].
|
||||||
Returns a 204 empty response on success.
|
|
||||||
Fires a Message Reaction Add Gateway event.
|
|
||||||
|
|
||||||
# Reference
|
# Reference
|
||||||
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) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/@me/",
|
"{}/channels/{}/messages/{}/reactions/{}/@me/",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -142,7 +129,7 @@ impl ReactionMeta {
|
||||||
emoji
|
emoji
|
||||||
);
|
);
|
||||||
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_result(request, user, crate::api::limits::LimitType::Channel).await
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -155,14 +142,13 @@ impl ReactionMeta {
|
||||||
* `user` - A mutable reference to a [`UserMeta`] instance.
|
* `user` - A mutable reference to a [`UserMeta`] instance.
|
||||||
|
|
||||||
# Returns
|
# Returns
|
||||||
A `Result` containing a [`reqwest::Response`] or a [`crate::errors::ChorusLibError`].
|
A `Result` containing [`()`] or a [`crate::errors::ChorusLibError`].
|
||||||
Returns a 204 empty response on success.
|
|
||||||
Fires a `Message Reaction Remove` Gateway event.
|
Fires a `Message Reaction Remove` Gateway event.
|
||||||
|
|
||||||
# Reference
|
# Reference
|
||||||
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) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/@me/",
|
"{}/channels/{}/messages/{}/reactions/{}/@me/",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -171,7 +157,7 @@ impl ReactionMeta {
|
||||||
emoji
|
emoji
|
||||||
);
|
);
|
||||||
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_result(request, user, crate::api::limits::LimitType::Channel).await
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -187,8 +173,7 @@ impl ReactionMeta {
|
||||||
* `user` - A mutable reference to a [`UserMeta`] instance.
|
* `user` - A mutable reference to a [`UserMeta`] instance.
|
||||||
|
|
||||||
# Returns
|
# Returns
|
||||||
A `Result` containing a [`reqwest::Response`] or a [`crate::errors::ChorusLibError`].
|
A `Result` containing [`()`] or a [`crate::errors::ChorusLibError`].
|
||||||
Returns a 204 empty response on success.
|
|
||||||
Fires a Message Reaction Remove Gateway event.
|
Fires a Message Reaction Remove Gateway event.
|
||||||
|
|
||||||
# Reference
|
# Reference
|
||||||
|
@ -199,7 +184,7 @@ impl ReactionMeta {
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
emoji: &str,
|
emoji: &str,
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/{}",
|
"{}/channels/{}/messages/{}/reactions/{}/{}",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -209,6 +194,6 @@ impl ReactionMeta {
|
||||||
user_id
|
user_id
|
||||||
);
|
);
|
||||||
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_result(request, user, crate::api::limits::LimitType::Channel).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,16 +21,16 @@ pub async fn handle_request(
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sends a request to wherever it needs to go. Returns [`None`] on success and
|
/// Sends a request to wherever it needs to go. Returns [`Ok(())`] on success and
|
||||||
/// [`Some(ChorusLibError)`] on failure.
|
/// [`Err(ChorusLibError)`] on failure.
|
||||||
pub async fn handle_request_as_option(
|
pub async fn handle_request_as_result(
|
||||||
request: RequestBuilder,
|
request: RequestBuilder,
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
limit_type: LimitType,
|
limit_type: LimitType,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Result<(), ChorusLibError> {
|
||||||
match handle_request(request, user, limit_type).await {
|
match handle_request(request, user, limit_type).await {
|
||||||
Ok(_) => None,
|
Ok(_) => Ok(()),
|
||||||
Err(e) => Some(ChorusLibError::InvalidResponseError {
|
Err(e) => Err(ChorusLibError::InvalidResponseError {
|
||||||
error: e.to_string(),
|
error: e.to_string(),
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ use serde_json::to_string;
|
||||||
|
|
||||||
use crate::api::deserialize_response;
|
use crate::api::deserialize_response;
|
||||||
use crate::api::handle_request;
|
use crate::api::handle_request;
|
||||||
use crate::api::handle_request_as_option;
|
use crate::api::handle_request_as_result;
|
||||||
use crate::api::limits::Limits;
|
use crate::api::limits::Limits;
|
||||||
use crate::errors::ChorusLibError;
|
use crate::errors::ChorusLibError;
|
||||||
use crate::instance::UserMeta;
|
use crate::instance::UserMeta;
|
||||||
|
@ -50,7 +50,7 @@ impl Guild {
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
///
|
///
|
||||||
/// An `Option` containing an `ChorusLibError` if an error occurred during the request, otherwise `None`.
|
/// An `Result` containing an `ChorusLibError` if an error occurred during the request, otherwise `()`.
|
||||||
///
|
///
|
||||||
/// # Example
|
/// # Example
|
||||||
///
|
///
|
||||||
|
@ -64,7 +64,7 @@ impl Guild {
|
||||||
/// None => println!("Guild deleted successfully"),
|
/// None => println!("Guild deleted successfully"),
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
pub async fn delete(user: &mut UserMeta, guild_id: &str) -> Option<ChorusLibError> {
|
pub async fn delete(user: &mut UserMeta, guild_id: &str) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/delete/",
|
"{}/guilds/{}/delete/",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -73,7 +73,7 @@ impl Guild {
|
||||||
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());
|
||||||
handle_request_as_option(request, user, crate::api::limits::LimitType::Guild).await
|
handle_request_as_result(request, user, crate::api::limits::LimitType::Guild).await
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sends a request to create a new channel in the guild.
|
/// Sends a request to create a new channel in the guild.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
api::{deserialize_response, handle_request_as_option},
|
api::{deserialize_response, handle_request_as_result},
|
||||||
errors::ChorusLibError,
|
errors::ChorusLibError,
|
||||||
instance::UserMeta,
|
instance::UserMeta,
|
||||||
types,
|
types,
|
||||||
|
@ -50,13 +50,13 @@ impl types::GuildMember {
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
///
|
///
|
||||||
/// An `Option` containing a `ChorusLibError` if the request fails, or `None` if the request succeeds.
|
/// An `Result` containing a `ChorusLibError` if the request fails, or `()` if the request succeeds.
|
||||||
pub async fn add_role(
|
pub async fn add_role(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
member_id: &str,
|
member_id: &str,
|
||||||
role_id: &str,
|
role_id: &str,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/members/{}/roles/{}/",
|
"{}/guilds/{}/members/{}/roles/{}/",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -65,7 +65,7 @@ impl types::GuildMember {
|
||||||
role_id
|
role_id
|
||||||
);
|
);
|
||||||
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_result(request, user, crate::api::limits::LimitType::Guild).await
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Removes a role from a guild member.
|
/// Removes a role from a guild member.
|
||||||
|
@ -79,13 +79,13 @@ impl types::GuildMember {
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
///
|
///
|
||||||
/// An `Option` containing a `ChorusLibError` if the request fails, or `None` if the request succeeds.
|
/// A `Result` containing a `ChorusLibError` if the request fails, or `()` if the request succeeds.
|
||||||
pub async fn remove_role(
|
pub async fn remove_role(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
member_id: &str,
|
member_id: &str,
|
||||||
role_id: &str,
|
role_id: &str,
|
||||||
) -> Option<crate::errors::ChorusLibError> {
|
) -> Result<(), crate::errors::ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/members/{}/roles/{}/",
|
"{}/guilds/{}/members/{}/roles/{}/",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -94,6 +94,6 @@ impl types::GuildMember {
|
||||||
role_id
|
role_id
|
||||||
);
|
);
|
||||||
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_result(request, user, crate::api::limits::LimitType::Guild).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ use reqwest::Client;
|
||||||
use serde_json::to_string;
|
use serde_json::to_string;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
api::{deserialize_response, handle_request_as_option},
|
api::{deserialize_response, handle_request_as_result},
|
||||||
errors::ChorusLibError,
|
errors::ChorusLibError,
|
||||||
instance::UserMeta,
|
instance::UserMeta,
|
||||||
types::{self, CreateUserRelationshipSchema, RelationshipType},
|
types::{self, CreateUserRelationshipSchema, RelationshipType},
|
||||||
|
@ -60,18 +60,18 @@ impl UserMeta {
|
||||||
/// * `schema` - A [`FriendRequestSendSchema`] struct that holds the information about the friend request to be sent.
|
/// * `schema` - A [`FriendRequestSendSchema`] struct that holds the information about the friend request to be sent.
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
/// This function returns an [`Option`] that holds a [`ChorusLibError`] if the request fails.
|
/// This function returns a [`Result`] that holds a [`ChorusLibError`] if the request fails.
|
||||||
pub async fn send_friend_request(
|
pub async fn send_friend_request(
|
||||||
&mut self,
|
&mut self,
|
||||||
schema: types::FriendRequestSendSchema,
|
schema: types::FriendRequestSendSchema,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/users/@me/relationships/",
|
"{}/users/@me/relationships/",
|
||||||
self.belongs_to.borrow().urls.api
|
self.belongs_to.borrow().urls.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_result(request, self, crate::api::limits::LimitType::Global).await
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Modifies the relationship between the authenticated user and the specified user.
|
/// Modifies the relationship between the authenticated user and the specified user.
|
||||||
|
@ -87,19 +87,19 @@ impl UserMeta {
|
||||||
/// * [`RelationshipType::Blocked`]: Blocks the specified user_id.
|
/// * [`RelationshipType::Blocked`]: Blocks the specified user_id.
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
/// This function returns an [`Option`] that holds a [`ChorusLibError`] if the request fails.
|
/// This function returns an [`Result`] that holds a [`ChorusLibError`] if the request fails.
|
||||||
pub async fn modify_user_relationship(
|
pub async fn modify_user_relationship(
|
||||||
&mut self,
|
&mut self,
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
relationship_type: RelationshipType,
|
relationship_type: RelationshipType,
|
||||||
) -> Option<ChorusLibError> {
|
) -> Result<(), ChorusLibError> {
|
||||||
let api_url = self.belongs_to.borrow().urls.api.clone();
|
let api_url = self.belongs_to.borrow().urls.api.clone();
|
||||||
match relationship_type {
|
match relationship_type {
|
||||||
RelationshipType::None => {
|
RelationshipType::None => {
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.delete(format!("{}/users/@me/relationships/{}/", api_url, user_id))
|
.delete(format!("{}/users/@me/relationships/{}/", api_url, user_id))
|
||||||
.bearer_auth(self.token());
|
.bearer_auth(self.token());
|
||||||
handle_request_as_option(request, self, crate::api::limits::LimitType::Global).await
|
handle_request_as_result(request, self, crate::api::limits::LimitType::Global).await
|
||||||
}
|
}
|
||||||
RelationshipType::Friends | RelationshipType::Incoming | RelationshipType::Outgoing => {
|
RelationshipType::Friends | RelationshipType::Incoming | RelationshipType::Outgoing => {
|
||||||
let body = CreateUserRelationshipSchema {
|
let body = CreateUserRelationshipSchema {
|
||||||
|
@ -111,7 +111,7 @@ impl UserMeta {
|
||||||
.put(format!("{}/users/@me/relationships/{}/", api_url, user_id))
|
.put(format!("{}/users/@me/relationships/{}/", api_url, user_id))
|
||||||
.bearer_auth(self.token())
|
.bearer_auth(self.token())
|
||||||
.body(to_string(&body).unwrap());
|
.body(to_string(&body).unwrap());
|
||||||
handle_request_as_option(request, self, crate::api::limits::LimitType::Global).await
|
handle_request_as_result(request, self, crate::api::limits::LimitType::Global).await
|
||||||
}
|
}
|
||||||
RelationshipType::Blocked => {
|
RelationshipType::Blocked => {
|
||||||
let body = CreateUserRelationshipSchema {
|
let body = CreateUserRelationshipSchema {
|
||||||
|
@ -123,9 +123,9 @@ impl UserMeta {
|
||||||
.put(format!("{}/users/@me/relationships/{}/", api_url, user_id))
|
.put(format!("{}/users/@me/relationships/{}/", api_url, user_id))
|
||||||
.bearer_auth(self.token())
|
.bearer_auth(self.token())
|
||||||
.body(to_string(&body).unwrap());
|
.body(to_string(&body).unwrap());
|
||||||
handle_request_as_option(request, self, crate::api::limits::LimitType::Global).await
|
handle_request_as_result(request, self, crate::api::limits::LimitType::Global).await
|
||||||
}
|
}
|
||||||
RelationshipType::Suggestion | RelationshipType::Implicit => None,
|
RelationshipType::Suggestion | RelationshipType::Implicit => Ok(()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,14 +136,14 @@ impl UserMeta {
|
||||||
/// * `user_id` - A string slice that holds the ID of the user to remove the relationship with.
|
/// * `user_id` - A string slice that holds the ID of the user to remove the relationship with.
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
/// This function returns an [`Option`] that holds a [`ChorusLibError`] if the request fails.
|
/// This function returns a [`Result`] 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) -> Result<(), ChorusLibError> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/users/@me/relationships/{}/",
|
"{}/users/@me/relationships/{}/",
|
||||||
self.belongs_to.borrow().urls.api,
|
self.belongs_to.borrow().urls.api,
|
||||||
user_id
|
user_id
|
||||||
);
|
);
|
||||||
let request = Client::new().delete(url).bearer_auth(self.token());
|
let request = Client::new().delete(url).bearer_auth(self.token());
|
||||||
handle_request_as_option(request, self, crate::api::limits::LimitType::Global).await
|
handle_request_as_result(request, self, crate::api::limits::LimitType::Global).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ use reqwest::Client;
|
||||||
use serde_json::to_string;
|
use serde_json::to_string;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
api::{deserialize_response, handle_request_as_option, limits::Limits},
|
api::{deserialize_response, handle_request_as_result, limits::Limits},
|
||||||
errors::ChorusLibError,
|
errors::ChorusLibError,
|
||||||
instance::{Instance, UserMeta},
|
instance::{Instance, UserMeta},
|
||||||
limit::LimitedRequester,
|
limit::LimitedRequester,
|
||||||
|
@ -71,15 +71,15 @@ impl UserMeta {
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
///
|
///
|
||||||
/// Returns `None` if the user was successfully deleted, or an `ChorusLibError` if an error occurred.
|
/// Returns `()` if the user was successfully deleted, or a `ChorusLibError` if an error occurred.
|
||||||
pub async fn delete(mut self) -> Option<ChorusLibError> {
|
pub async fn delete(mut self) -> Result<(), ChorusLibError> {
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.post(format!(
|
.post(format!(
|
||||||
"{}/users/@me/delete/",
|
"{}/users/@me/delete/",
|
||||||
self.belongs_to.borrow().urls.api
|
self.belongs_to.borrow().urls.api
|
||||||
))
|
))
|
||||||
.bearer_auth(self.token());
|
.bearer_auth(self.token());
|
||||||
handle_request_as_option(request, &mut self, crate::api::limits::LimitType::Ip).await
|
handle_request_as_result(request, &mut self, crate::api::limits::LimitType::Ip).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue