Change `UserMeta` to `ChorusUser`
This commit is contained in:
parent
7d0db49e5c
commit
fb7e33c0ec
|
@ -8,7 +8,7 @@ use serde_json::to_string;
|
||||||
use crate::api::LimitType;
|
use crate::api::LimitType;
|
||||||
use crate::errors::ChorusResult;
|
use crate::errors::ChorusResult;
|
||||||
use crate::gateway::Gateway;
|
use crate::gateway::Gateway;
|
||||||
use crate::instance::{Instance, UserMeta};
|
use crate::instance::{ChorusUser, Instance};
|
||||||
use crate::ratelimiter::ChorusRequest;
|
use crate::ratelimiter::ChorusRequest;
|
||||||
use crate::types::{GatewayIdentifyPayload, LoginResult, LoginSchema};
|
use crate::types::{GatewayIdentifyPayload, LoginResult, LoginSchema};
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ impl Instance {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://docs.spacebar.chat/routes/#post-/auth/login/>
|
/// See <https://docs.spacebar.chat/routes/#post-/auth/login/>
|
||||||
pub async fn login_account(&mut self, login_schema: &LoginSchema) -> ChorusResult<UserMeta> {
|
pub async fn login_account(&mut self, login_schema: &LoginSchema) -> ChorusResult<ChorusUser> {
|
||||||
let endpoint_url = self.urls.api.clone() + "/auth/login";
|
let endpoint_url = self.urls.api.clone() + "/auth/login";
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -30,7 +30,7 @@ impl Instance {
|
||||||
// request (since login is an instance wide limit), which is why we are just cloning the
|
// request (since login is an instance wide limit), which is why we are just cloning the
|
||||||
// instances' limits to pass them on as user_rate_limits later.
|
// instances' limits to pass them on as user_rate_limits later.
|
||||||
let mut shell =
|
let mut shell =
|
||||||
UserMeta::shell(Rc::new(RefCell::new(self.clone())), "None".to_string()).await;
|
ChorusUser::shell(Rc::new(RefCell::new(self.clone())), "None".to_string()).await;
|
||||||
let login_result = chorus_request
|
let login_result = chorus_request
|
||||||
.deserialize_response::<LoginResult>(&mut shell)
|
.deserialize_response::<LoginResult>(&mut shell)
|
||||||
.await?;
|
.await?;
|
||||||
|
@ -42,7 +42,7 @@ impl Instance {
|
||||||
let gateway = Gateway::new(self.urls.wss.clone()).await.unwrap();
|
let gateway = Gateway::new(self.urls.wss.clone()).await.unwrap();
|
||||||
identify.token = login_result.token.clone();
|
identify.token = login_result.token.clone();
|
||||||
gateway.send_identify(identify).await;
|
gateway.send_identify(identify).await;
|
||||||
let user = UserMeta::new(
|
let user = ChorusUser::new(
|
||||||
Rc::new(RefCell::new(self.clone())),
|
Rc::new(RefCell::new(self.clone())),
|
||||||
login_result.token,
|
login_result.token,
|
||||||
self.clone_limits_if_some(),
|
self.clone_limits_if_some(),
|
||||||
|
|
|
@ -9,7 +9,7 @@ use crate::types::GatewayIdentifyPayload;
|
||||||
use crate::{
|
use crate::{
|
||||||
api::policies::instance::LimitType,
|
api::policies::instance::LimitType,
|
||||||
errors::ChorusResult,
|
errors::ChorusResult,
|
||||||
instance::{Instance, Token, UserMeta},
|
instance::{ChorusUser, Instance, Token},
|
||||||
ratelimiter::ChorusRequest,
|
ratelimiter::ChorusRequest,
|
||||||
types::RegisterSchema,
|
types::RegisterSchema,
|
||||||
};
|
};
|
||||||
|
@ -22,7 +22,7 @@ impl Instance {
|
||||||
pub async fn register_account(
|
pub async fn register_account(
|
||||||
&mut self,
|
&mut self,
|
||||||
register_schema: &RegisterSchema,
|
register_schema: &RegisterSchema,
|
||||||
) -> ChorusResult<UserMeta> {
|
) -> ChorusResult<ChorusUser> {
|
||||||
let endpoint_url = self.urls.api.clone() + "/auth/register";
|
let endpoint_url = self.urls.api.clone() + "/auth/register";
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -35,7 +35,7 @@ impl Instance {
|
||||||
// request (since register is an instance wide limit), which is why we are just cloning
|
// request (since register is an instance wide limit), which is why we are just cloning
|
||||||
// the instances' limits to pass them on as user_rate_limits later.
|
// the instances' limits to pass them on as user_rate_limits later.
|
||||||
let mut shell =
|
let mut shell =
|
||||||
UserMeta::shell(Rc::new(RefCell::new(self.clone())), "None".to_string()).await;
|
ChorusUser::shell(Rc::new(RefCell::new(self.clone())), "None".to_string()).await;
|
||||||
let token = chorus_request
|
let token = chorus_request
|
||||||
.deserialize_response::<Token>(&mut shell)
|
.deserialize_response::<Token>(&mut shell)
|
||||||
.await?
|
.await?
|
||||||
|
@ -44,12 +44,12 @@ impl Instance {
|
||||||
self.limits_information.as_mut().unwrap().ratelimits = shell.limits.unwrap();
|
self.limits_information.as_mut().unwrap().ratelimits = shell.limits.unwrap();
|
||||||
}
|
}
|
||||||
let user_object = self.get_user(token.clone(), None).await.unwrap();
|
let user_object = self.get_user(token.clone(), None).await.unwrap();
|
||||||
let settings = UserMeta::get_settings(&token, &self.urls.api.clone(), self).await?;
|
let settings = ChorusUser::get_settings(&token, &self.urls.api.clone(), self).await?;
|
||||||
let mut identify = GatewayIdentifyPayload::common();
|
let mut identify = GatewayIdentifyPayload::common();
|
||||||
let gateway = Gateway::new(self.urls.wss.clone()).await.unwrap();
|
let gateway = Gateway::new(self.urls.wss.clone()).await.unwrap();
|
||||||
identify.token = token.clone();
|
identify.token = token.clone();
|
||||||
gateway.send_identify(identify).await;
|
gateway.send_identify(identify).await;
|
||||||
let user = UserMeta::new(
|
let user = ChorusUser::new(
|
||||||
Rc::new(RefCell::new(self.clone())),
|
Rc::new(RefCell::new(self.clone())),
|
||||||
token.clone(),
|
token.clone(),
|
||||||
self.clone_limits_if_some(),
|
self.clone_limits_if_some(),
|
||||||
|
|
|
@ -5,7 +5,7 @@ use crate::types::{AddChannelRecipientSchema, ModifyChannelPositionsSchema};
|
||||||
use crate::{
|
use crate::{
|
||||||
api::LimitType,
|
api::LimitType,
|
||||||
errors::{ChorusError, ChorusResult},
|
errors::{ChorusError, ChorusResult},
|
||||||
instance::UserMeta,
|
instance::ChorusUser,
|
||||||
ratelimiter::ChorusRequest,
|
ratelimiter::ChorusRequest,
|
||||||
types::{Channel, ChannelModifySchema, GetChannelMessagesSchema, Message, Snowflake},
|
types::{Channel, ChannelModifySchema, GetChannelMessagesSchema, Message, Snowflake},
|
||||||
};
|
};
|
||||||
|
@ -15,7 +15,7 @@ impl Channel {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/channel#get-channel>
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#get-channel>
|
||||||
pub async fn get(user: &mut UserMeta, channel_id: Snowflake) -> ChorusResult<Channel> {
|
pub async fn get(user: &mut ChorusUser, channel_id: Snowflake) -> ChorusResult<Channel> {
|
||||||
let url = user.belongs_to.borrow().urls.api.clone();
|
let url = user.belongs_to.borrow().urls.api.clone();
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -33,7 +33,7 @@ impl Channel {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/channel#delete-channel>
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#delete-channel>
|
||||||
pub async fn delete(self, user: &mut UserMeta) -> ChorusResult<()> {
|
pub async fn delete(self, user: &mut ChorusUser) -> ChorusResult<()> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
.delete(format!(
|
.delete(format!(
|
||||||
|
@ -64,7 +64,7 @@ impl Channel {
|
||||||
pub async fn modify(
|
pub async fn modify(
|
||||||
&self,
|
&self,
|
||||||
modify_data: ChannelModifySchema,
|
modify_data: ChannelModifySchema,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Channel> {
|
) -> ChorusResult<Channel> {
|
||||||
let channel_id = self.id;
|
let channel_id = self.id;
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
|
@ -94,7 +94,7 @@ impl Channel {
|
||||||
pub async fn messages(
|
pub async fn messages(
|
||||||
range: GetChannelMessagesSchema,
|
range: GetChannelMessagesSchema,
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> Result<Vec<Message>, ChorusError> {
|
) -> Result<Vec<Message>, ChorusError> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -120,7 +120,7 @@ impl Channel {
|
||||||
pub async fn add_channel_recipient(
|
pub async fn add_channel_recipient(
|
||||||
&self,
|
&self,
|
||||||
recipient_id: Snowflake,
|
recipient_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
add_channel_recipient_schema: Option<AddChannelRecipientSchema>,
|
add_channel_recipient_schema: Option<AddChannelRecipientSchema>,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
let mut request = Client::new()
|
let mut request = Client::new()
|
||||||
|
@ -150,7 +150,7 @@ impl Channel {
|
||||||
pub async fn remove_channel_recipient(
|
pub async fn remove_channel_recipient(
|
||||||
&self,
|
&self,
|
||||||
recipient_id: Snowflake,
|
recipient_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.delete(format!(
|
.delete(format!(
|
||||||
|
@ -176,7 +176,7 @@ impl Channel {
|
||||||
pub async fn modify_positions(
|
pub async fn modify_positions(
|
||||||
schema: Vec<ModifyChannelPositionsSchema>,
|
schema: Vec<ModifyChannelPositionsSchema>,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.patch(format!(
|
.patch(format!(
|
||||||
|
|
|
@ -5,7 +5,7 @@ use serde_json::{from_value, to_string, Value};
|
||||||
|
|
||||||
use crate::api::LimitType;
|
use crate::api::LimitType;
|
||||||
use crate::errors::{ChorusError, ChorusResult};
|
use crate::errors::{ChorusError, ChorusResult};
|
||||||
use crate::instance::UserMeta;
|
use crate::instance::ChorusUser;
|
||||||
use crate::ratelimiter::ChorusRequest;
|
use crate::ratelimiter::ChorusRequest;
|
||||||
use crate::types::{
|
use crate::types::{
|
||||||
Channel, CreateGreetMessage, Message, MessageAck, MessageModifySchema, MessageSearchEndpoint,
|
Channel, CreateGreetMessage, Message, MessageAck, MessageModifySchema, MessageSearchEndpoint,
|
||||||
|
@ -19,7 +19,7 @@ impl Message {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/message#create-message>
|
/// See <https://discord-userdoccers.vercel.app/resources/message#create-message>
|
||||||
pub async fn send(
|
pub async fn send(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
mut message: MessageSendSchema,
|
mut message: MessageSendSchema,
|
||||||
) -> ChorusResult<Message> {
|
) -> ChorusResult<Message> {
|
||||||
|
@ -87,7 +87,7 @@ impl Message {
|
||||||
pub(crate) async fn search(
|
pub(crate) async fn search(
|
||||||
endpoint: MessageSearchEndpoint,
|
endpoint: MessageSearchEndpoint,
|
||||||
query: MessageSearchQuery,
|
query: MessageSearchQuery,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Vec<Message>> {
|
) -> ChorusResult<Vec<Message>> {
|
||||||
let limit_type = match &endpoint {
|
let limit_type = match &endpoint {
|
||||||
MessageSearchEndpoint::Channel(id) => LimitType::Channel(*id),
|
MessageSearchEndpoint::Channel(id) => LimitType::Channel(*id),
|
||||||
|
@ -136,7 +136,7 @@ impl Message {
|
||||||
/// See: <https://discord-userdoccers.vercel.app/resources/message#get-pinned-messages>
|
/// See: <https://discord-userdoccers.vercel.app/resources/message#get-pinned-messages>
|
||||||
pub async fn get_sticky(
|
pub async fn get_sticky(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Vec<Message>> {
|
) -> ChorusResult<Vec<Message>> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -162,7 +162,7 @@ impl Message {
|
||||||
pub async fn sticky(
|
pub async fn sticky(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
message_id: Snowflake,
|
message_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -185,7 +185,7 @@ impl Message {
|
||||||
pub async fn unsticky(
|
pub async fn unsticky(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
message_id: Snowflake,
|
message_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -209,7 +209,7 @@ impl Message {
|
||||||
pub async fn get(
|
pub async fn get(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
message_id: Snowflake,
|
message_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Message> {
|
) -> ChorusResult<Message> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -232,7 +232,7 @@ impl Message {
|
||||||
pub async fn create_greet(
|
pub async fn create_greet(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
schema: CreateGreetMessage,
|
schema: CreateGreetMessage,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Message> {
|
) -> ChorusResult<Message> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -263,7 +263,7 @@ impl Message {
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
message_id: Snowflake,
|
message_id: Snowflake,
|
||||||
schema: MessageAck,
|
schema: MessageAck,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Option<String>> {
|
) -> ChorusResult<Option<String>> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -292,7 +292,7 @@ impl Message {
|
||||||
pub async fn crosspost(
|
pub async fn crosspost(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
message_id: Snowflake,
|
message_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Message> {
|
) -> ChorusResult<Message> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -316,7 +316,7 @@ impl Message {
|
||||||
pub async fn hide_from_guild_feed(
|
pub async fn hide_from_guild_feed(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
message_id: Snowflake,
|
message_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -347,7 +347,7 @@ impl Message {
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
message_id: Snowflake,
|
message_id: Snowflake,
|
||||||
schema: MessageModifySchema,
|
schema: MessageModifySchema,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Message> {
|
) -> ChorusResult<Message> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -370,7 +370,7 @@ impl Message {
|
||||||
pub async fn delete(
|
pub async fn delete(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
message_id: Snowflake,
|
message_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -399,7 +399,7 @@ impl Message {
|
||||||
pub async fn bulk_delete(
|
pub async fn bulk_delete(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
messages: Vec<Snowflake>,
|
messages: Vec<Snowflake>,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
if messages.len() < 2 {
|
if messages.len() < 2 {
|
||||||
return Err(ChorusError::InvalidArguments {
|
return Err(ChorusError::InvalidArguments {
|
||||||
|
@ -427,7 +427,7 @@ impl Message {
|
||||||
/// See: <https://discord-userdoccers.vercel.app/resources/message#acknowledge-pinned-messages>
|
/// See: <https://discord-userdoccers.vercel.app/resources/message#acknowledge-pinned-messages>
|
||||||
pub async fn acknowledge_pinned(
|
pub async fn acknowledge_pinned(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -453,7 +453,7 @@ fn search_error(result_text: String) -> ChorusError {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UserMeta {
|
impl ChorusUser {
|
||||||
/// Sends a message in the channel with the provided channel_id.
|
/// Sends a message in the channel with the provided channel_id.
|
||||||
/// Returns the sent message.
|
/// Returns the sent message.
|
||||||
///
|
///
|
||||||
|
@ -485,7 +485,7 @@ impl Channel {
|
||||||
pub async fn search_messages(
|
pub async fn search_messages(
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
query: MessageSearchQuery,
|
query: MessageSearchQuery,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Vec<Message>> {
|
) -> ChorusResult<Vec<Message>> {
|
||||||
Message::search(MessageSearchEndpoint::Channel(channel_id), query, user).await
|
Message::search(MessageSearchEndpoint::Channel(channel_id), query, user).await
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ use serde_json::to_string;
|
||||||
use crate::{
|
use crate::{
|
||||||
api::LimitType,
|
api::LimitType,
|
||||||
errors::{ChorusError, ChorusResult},
|
errors::{ChorusError, ChorusResult},
|
||||||
instance::UserMeta,
|
instance::ChorusUser,
|
||||||
ratelimiter::ChorusRequest,
|
ratelimiter::ChorusRequest,
|
||||||
types::{self, PermissionOverwrite, Snowflake},
|
types::{self, PermissionOverwrite, Snowflake},
|
||||||
};
|
};
|
||||||
|
@ -21,7 +21,7 @@ impl types::Channel {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/channel#modify-channel-permissions>
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#modify-channel-permissions>
|
||||||
pub async fn edit_permissions(
|
pub async fn edit_permissions(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
overwrite: PermissionOverwrite,
|
overwrite: PermissionOverwrite,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
|
@ -59,7 +59,7 @@ impl types::Channel {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/channel#delete-channel-permission>
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#delete-channel-permission>
|
||||||
pub async fn delete_permission(
|
pub async fn delete_permission(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
channel_id: Snowflake,
|
channel_id: Snowflake,
|
||||||
overwrite_id: Snowflake,
|
overwrite_id: Snowflake,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
|
|
|
@ -3,7 +3,7 @@ use reqwest::Client;
|
||||||
use crate::{
|
use crate::{
|
||||||
api::LimitType,
|
api::LimitType,
|
||||||
errors::ChorusResult,
|
errors::ChorusResult,
|
||||||
instance::UserMeta,
|
instance::ChorusUser,
|
||||||
ratelimiter::ChorusRequest,
|
ratelimiter::ChorusRequest,
|
||||||
types::{self, PublicUser, Snowflake},
|
types::{self, PublicUser, Snowflake},
|
||||||
};
|
};
|
||||||
|
@ -21,7 +21,7 @@ impl ReactionMeta {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord.com/developers/docs/resources/channel#delete-all-reactions>
|
/// See <https://discord.com/developers/docs/resources/channel#delete-all-reactions>
|
||||||
pub async fn delete_all(&self, user: &mut UserMeta) -> ChorusResult<()> {
|
pub async fn delete_all(&self, user: &mut ChorusUser) -> ChorusResult<()> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions",
|
"{}/channels/{}/messages/{}/reactions",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -44,7 +44,7 @@ impl ReactionMeta {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord.com/developers/docs/resources/channel#get-reactions>
|
/// See <https://discord.com/developers/docs/resources/channel#get-reactions>
|
||||||
pub async fn get(&self, emoji: &str, user: &mut UserMeta) -> ChorusResult<Vec<PublicUser>> {
|
pub async fn get(&self, emoji: &str, user: &mut ChorusUser) -> ChorusResult<Vec<PublicUser>> {
|
||||||
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,7 +70,7 @@ impl ReactionMeta {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <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>
|
||||||
pub async fn delete_emoji(&self, emoji: &str, user: &mut UserMeta) -> ChorusResult<()> {
|
pub async fn delete_emoji(&self, emoji: &str, user: &mut ChorusUser) -> ChorusResult<()> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}",
|
"{}/channels/{}/messages/{}/reactions/{}",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -99,7 +99,7 @@ impl ReactionMeta {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord.com/developers/docs/resources/channel#create-reaction>
|
/// See <https://discord.com/developers/docs/resources/channel#create-reaction>
|
||||||
pub async fn create(&self, emoji: &str, user: &mut UserMeta) -> ChorusResult<()> {
|
pub async fn create(&self, emoji: &str, user: &mut ChorusUser) -> ChorusResult<()> {
|
||||||
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,
|
||||||
|
@ -124,7 +124,7 @@ impl ReactionMeta {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord.com/developers/docs/resources/channel#delete-own-reaction>
|
/// See <https://discord.com/developers/docs/resources/channel#delete-own-reaction>
|
||||||
pub async fn remove(&self, emoji: &str, user: &mut UserMeta) -> ChorusResult<()> {
|
pub async fn remove(&self, emoji: &str, user: &mut ChorusUser) -> ChorusResult<()> {
|
||||||
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,
|
||||||
|
@ -154,7 +154,7 @@ impl ReactionMeta {
|
||||||
&self,
|
&self,
|
||||||
user_id: Snowflake,
|
user_id: Snowflake,
|
||||||
emoji: &str,
|
emoji: &str,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<()> {
|
) -> ChorusResult<()> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/channels/{}/messages/{}/reactions/{}/{}",
|
"{}/channels/{}/messages/{}/reactions/{}/{}",
|
||||||
|
|
|
@ -5,7 +5,7 @@ use serde_json::to_string;
|
||||||
use crate::api::LimitType;
|
use crate::api::LimitType;
|
||||||
use crate::errors::ChorusError;
|
use crate::errors::ChorusError;
|
||||||
use crate::errors::ChorusResult;
|
use crate::errors::ChorusResult;
|
||||||
use crate::instance::UserMeta;
|
use crate::instance::ChorusUser;
|
||||||
use crate::ratelimiter::ChorusRequest;
|
use crate::ratelimiter::ChorusRequest;
|
||||||
use crate::types::{
|
use crate::types::{
|
||||||
Channel, ChannelCreateSchema, Guild, GuildBanCreateSchema, GuildCreateSchema, GuildModifySchema,
|
Channel, ChannelCreateSchema, Guild, GuildBanCreateSchema, GuildCreateSchema, GuildModifySchema,
|
||||||
|
@ -18,7 +18,7 @@ impl Guild {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#create-guild>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#create-guild>
|
||||||
pub async fn create(
|
pub async fn create(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
guild_create_schema: GuildCreateSchema,
|
guild_create_schema: GuildCreateSchema,
|
||||||
) -> ChorusResult<Guild> {
|
) -> ChorusResult<Guild> {
|
||||||
let url = format!("{}/guilds", user.belongs_to.borrow().urls.api);
|
let url = format!("{}/guilds", user.belongs_to.borrow().urls.api);
|
||||||
|
@ -52,7 +52,7 @@ impl Guild {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#delete-guild>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#delete-guild>
|
||||||
pub async fn delete(user: &mut UserMeta, guild_id: Snowflake) -> ChorusResult<()> {
|
pub async fn delete(user: &mut ChorusUser, guild_id: Snowflake) -> ChorusResult<()> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/delete",
|
"{}/guilds/{}/delete",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -79,7 +79,7 @@ impl Guild {
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/channel#create-guild-channel>
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#create-guild-channel>
|
||||||
pub async fn create_channel(
|
pub async fn create_channel(
|
||||||
&self,
|
&self,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
schema: ChannelCreateSchema,
|
schema: ChannelCreateSchema,
|
||||||
) -> ChorusResult<Channel> {
|
) -> ChorusResult<Channel> {
|
||||||
Channel::create(user, self.id, schema).await
|
Channel::create(user, self.id, schema).await
|
||||||
|
@ -91,7 +91,7 @@ impl Guild {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/channel#get-guild-channels>
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#get-guild-channels>
|
||||||
pub async fn channels(&self, user: &mut UserMeta) -> ChorusResult<Vec<Channel>> {
|
pub async fn channels(&self, user: &mut ChorusUser) -> ChorusResult<Vec<Channel>> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
.get(format!(
|
.get(format!(
|
||||||
|
@ -125,7 +125,7 @@ impl Guild {
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#get-guild>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#get-guild>
|
||||||
pub async fn get(guild_id: Snowflake, user: &mut UserMeta) -> ChorusResult<Guild> {
|
pub async fn get(guild_id: Snowflake, user: &mut ChorusUser) -> ChorusResult<Guild> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
.get(format!(
|
.get(format!(
|
||||||
|
@ -144,7 +144,7 @@ impl Guild {
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
user_id: Snowflake,
|
user_id: Snowflake,
|
||||||
schema: GuildBanCreateSchema,
|
schema: GuildBanCreateSchema,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<GuildBan> {
|
) -> ChorusResult<GuildBan> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -169,7 +169,7 @@ impl Guild {
|
||||||
pub async fn modify(
|
pub async fn modify(
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
schema: GuildModifySchema,
|
schema: GuildModifySchema,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Guild> {
|
) -> ChorusResult<Guild> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -195,7 +195,7 @@ impl Channel {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/channel#create-guild-channel>
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#create-guild-channel>
|
||||||
pub async fn create(
|
pub async fn create(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
schema: ChannelCreateSchema,
|
schema: ChannelCreateSchema,
|
||||||
) -> ChorusResult<Channel> {
|
) -> ChorusResult<Channel> {
|
||||||
|
|
|
@ -3,7 +3,7 @@ use reqwest::Client;
|
||||||
use crate::{
|
use crate::{
|
||||||
api::LimitType,
|
api::LimitType,
|
||||||
errors::ChorusResult,
|
errors::ChorusResult,
|
||||||
instance::UserMeta,
|
instance::ChorusUser,
|
||||||
ratelimiter::ChorusRequest,
|
ratelimiter::ChorusRequest,
|
||||||
types::{self, GuildMember, Snowflake},
|
types::{self, GuildMember, Snowflake},
|
||||||
};
|
};
|
||||||
|
@ -14,7 +14,7 @@ impl types::GuildMember {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#get-guild-member>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#get-guild-member>
|
||||||
pub async fn get(
|
pub async fn get(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
member_id: Snowflake,
|
member_id: Snowflake,
|
||||||
) -> ChorusResult<GuildMember> {
|
) -> ChorusResult<GuildMember> {
|
||||||
|
@ -40,7 +40,7 @@ impl types::GuildMember {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#add-guild-member-role>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#add-guild-member-role>
|
||||||
pub async fn add_role(
|
pub async fn add_role(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
member_id: Snowflake,
|
member_id: Snowflake,
|
||||||
role_id: Snowflake,
|
role_id: Snowflake,
|
||||||
|
@ -69,7 +69,7 @@ impl types::GuildMember {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#remove-guild-member-role>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#remove-guild-member-role>
|
||||||
pub async fn remove_role(
|
pub async fn remove_role(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
member_id: Snowflake,
|
member_id: Snowflake,
|
||||||
role_id: Snowflake,
|
role_id: Snowflake,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::errors::ChorusResult;
|
use crate::errors::ChorusResult;
|
||||||
use crate::instance::UserMeta;
|
use crate::instance::ChorusUser;
|
||||||
use crate::types::{Guild, Message, MessageSearchQuery, Snowflake};
|
use crate::types::{Guild, Message, MessageSearchQuery, Snowflake};
|
||||||
|
|
||||||
impl Guild {
|
impl Guild {
|
||||||
|
@ -16,7 +16,7 @@ impl Guild {
|
||||||
pub async fn search_messages(
|
pub async fn search_messages(
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
query: MessageSearchQuery,
|
query: MessageSearchQuery,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<Vec<Message>> {
|
) -> ChorusResult<Vec<Message>> {
|
||||||
Message::search(
|
Message::search(
|
||||||
crate::types::MessageSearchEndpoint::GuildChannel(guild_id),
|
crate::types::MessageSearchEndpoint::GuildChannel(guild_id),
|
||||||
|
|
|
@ -4,7 +4,7 @@ use serde_json::to_string;
|
||||||
use crate::{
|
use crate::{
|
||||||
api::LimitType,
|
api::LimitType,
|
||||||
errors::{ChorusError, ChorusResult},
|
errors::{ChorusError, ChorusResult},
|
||||||
instance::UserMeta,
|
instance::ChorusUser,
|
||||||
ratelimiter::ChorusRequest,
|
ratelimiter::ChorusRequest,
|
||||||
types::{self, RoleCreateModifySchema, RoleObject, RolePositionUpdateSchema, Snowflake},
|
types::{self, RoleCreateModifySchema, RoleObject, RolePositionUpdateSchema, Snowflake},
|
||||||
};
|
};
|
||||||
|
@ -15,7 +15,7 @@ impl types::RoleObject {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#get-guild-roles>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#get-guild-roles>
|
||||||
pub async fn get_all(
|
pub async fn get_all(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
) -> ChorusResult<Vec<RoleObject>> {
|
) -> ChorusResult<Vec<RoleObject>> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
|
@ -39,7 +39,7 @@ impl types::RoleObject {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://docs.spacebar.chat/routes/#get-/guilds/-guild_id-/roles/-role_id-/>
|
/// See <https://docs.spacebar.chat/routes/#get-/guilds/-guild_id-/roles/-role_id-/>
|
||||||
pub async fn get(
|
pub async fn get(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
role_id: Snowflake,
|
role_id: Snowflake,
|
||||||
) -> ChorusResult<RoleObject> {
|
) -> ChorusResult<RoleObject> {
|
||||||
|
@ -65,7 +65,7 @@ impl types::RoleObject {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#create-guild-role>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#create-guild-role>
|
||||||
pub async fn create(
|
pub async fn create(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
role_create_schema: RoleCreateModifySchema,
|
role_create_schema: RoleCreateModifySchema,
|
||||||
) -> ChorusResult<RoleObject> {
|
) -> ChorusResult<RoleObject> {
|
||||||
|
@ -99,7 +99,7 @@ impl types::RoleObject {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#modify-guild-role-positions>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#modify-guild-role-positions>
|
||||||
pub async fn position_update(
|
pub async fn position_update(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
role_position_update_schema: RolePositionUpdateSchema,
|
role_position_update_schema: RolePositionUpdateSchema,
|
||||||
) -> ChorusResult<RoleObject> {
|
) -> ChorusResult<RoleObject> {
|
||||||
|
@ -132,7 +132,7 @@ impl types::RoleObject {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#modify-guild-role>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#modify-guild-role>
|
||||||
pub async fn modify(
|
pub async fn modify(
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
role_id: Snowflake,
|
role_id: Snowflake,
|
||||||
role_create_schema: RoleCreateModifySchema,
|
role_create_schema: RoleCreateModifySchema,
|
||||||
|
|
|
@ -2,11 +2,11 @@ use reqwest::Client;
|
||||||
use serde_json::to_string;
|
use serde_json::to_string;
|
||||||
|
|
||||||
use crate::errors::ChorusResult;
|
use crate::errors::ChorusResult;
|
||||||
use crate::instance::UserMeta;
|
use crate::instance::ChorusUser;
|
||||||
use crate::ratelimiter::ChorusRequest;
|
use crate::ratelimiter::ChorusRequest;
|
||||||
use crate::types::{CreateChannelInviteSchema, GuildInvite, Invite, Snowflake};
|
use crate::types::{CreateChannelInviteSchema, GuildInvite, Invite, Snowflake};
|
||||||
|
|
||||||
impl UserMeta {
|
impl ChorusUser {
|
||||||
/// Accepts an invite to a guild, group DM, or DM.
|
/// Accepts an invite to a guild, group DM, or DM.
|
||||||
///
|
///
|
||||||
/// Note that the session ID is required for guest invites.
|
/// Note that the session ID is required for guest invites.
|
||||||
|
|
|
@ -4,12 +4,12 @@ use serde_json::to_string;
|
||||||
use crate::{
|
use crate::{
|
||||||
api::LimitType,
|
api::LimitType,
|
||||||
errors::ChorusResult,
|
errors::ChorusResult,
|
||||||
instance::UserMeta,
|
instance::ChorusUser,
|
||||||
ratelimiter::ChorusRequest,
|
ratelimiter::ChorusRequest,
|
||||||
types::{Channel, PrivateChannelCreateSchema},
|
types::{Channel, PrivateChannelCreateSchema},
|
||||||
};
|
};
|
||||||
|
|
||||||
impl UserMeta {
|
impl ChorusUser {
|
||||||
/// Creates a DM channel or group DM channel.
|
/// Creates a DM channel or group DM channel.
|
||||||
///
|
///
|
||||||
/// One recipient creates or returns an existing DM channel,
|
/// One recipient creates or returns an existing DM channel,
|
||||||
|
|
|
@ -2,11 +2,11 @@ use reqwest::Client;
|
||||||
use serde_json::to_string;
|
use serde_json::to_string;
|
||||||
|
|
||||||
use crate::errors::ChorusResult;
|
use crate::errors::ChorusResult;
|
||||||
use crate::instance::UserMeta;
|
use crate::instance::ChorusUser;
|
||||||
use crate::ratelimiter::ChorusRequest;
|
use crate::ratelimiter::ChorusRequest;
|
||||||
use crate::types::Snowflake;
|
use crate::types::Snowflake;
|
||||||
|
|
||||||
impl UserMeta {
|
impl ChorusUser {
|
||||||
/// Leaves a given guild.
|
/// Leaves a given guild.
|
||||||
///
|
///
|
||||||
/// # Reference:
|
/// # Reference:
|
||||||
|
|
|
@ -4,14 +4,14 @@ use serde_json::to_string;
|
||||||
use crate::{
|
use crate::{
|
||||||
api::LimitType,
|
api::LimitType,
|
||||||
errors::ChorusResult,
|
errors::ChorusResult,
|
||||||
instance::UserMeta,
|
instance::ChorusUser,
|
||||||
ratelimiter::ChorusRequest,
|
ratelimiter::ChorusRequest,
|
||||||
types::{
|
types::{
|
||||||
self, CreateUserRelationshipSchema, FriendRequestSendSchema, RelationshipType, Snowflake,
|
self, CreateUserRelationshipSchema, FriendRequestSendSchema, RelationshipType, Snowflake,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
impl UserMeta {
|
impl ChorusUser {
|
||||||
/// Retrieves a list of mutual friends between the authenticated user and a given user.
|
/// Retrieves a list of mutual friends between the authenticated user and a given user.
|
||||||
///
|
///
|
||||||
/// # Reference
|
/// # Reference
|
||||||
|
|
|
@ -6,12 +6,12 @@ use serde_json::to_string;
|
||||||
use crate::{
|
use crate::{
|
||||||
api::LimitType,
|
api::LimitType,
|
||||||
errors::{ChorusError, ChorusResult},
|
errors::{ChorusError, ChorusResult},
|
||||||
instance::{Instance, UserMeta},
|
instance::{ChorusUser, Instance},
|
||||||
ratelimiter::ChorusRequest,
|
ratelimiter::ChorusRequest,
|
||||||
types::{User, UserModifySchema, UserSettings},
|
types::{User, UserModifySchema, UserSettings},
|
||||||
};
|
};
|
||||||
|
|
||||||
impl UserMeta {
|
impl ChorusUser {
|
||||||
/// Gets a user by id, or if the id is None, gets the current user.
|
/// Gets a user by id, or if the id is None, gets the current user.
|
||||||
///
|
///
|
||||||
/// # Notes
|
/// # Notes
|
||||||
|
@ -85,7 +85,7 @@ impl User {
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/user#get-user> and
|
/// See <https://discord-userdoccers.vercel.app/resources/user#get-user> and
|
||||||
/// <https://discord-userdoccers.vercel.app/resources/user#get-current-user>
|
/// <https://discord-userdoccers.vercel.app/resources/user#get-current-user>
|
||||||
pub async fn get(user: &mut UserMeta, id: Option<&String>) -> ChorusResult<User> {
|
pub async fn get(user: &mut ChorusUser, id: Option<&String>) -> ChorusResult<User> {
|
||||||
let url_api = user.belongs_to.borrow().urls.api.clone();
|
let url_api = user.belongs_to.borrow().urls.api.clone();
|
||||||
let url = if id.is_none() {
|
let url = if id.is_none() {
|
||||||
format!("{}/users/@me", url_api)
|
format!("{}/users/@me", url_api)
|
||||||
|
@ -121,7 +121,7 @@ impl User {
|
||||||
.get(format!("{}/users/@me/settings", url_api))
|
.get(format!("{}/users/@me/settings", url_api))
|
||||||
.header("Authorization", token);
|
.header("Authorization", token);
|
||||||
let mut user =
|
let mut user =
|
||||||
UserMeta::shell(Rc::new(RefCell::new(instance.clone())), token.clone()).await;
|
ChorusUser::shell(Rc::new(RefCell::new(instance.clone())), token.clone()).await;
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request,
|
request,
|
||||||
limit_type: LimitType::Global,
|
limit_type: LimitType::Global,
|
||||||
|
@ -148,7 +148,7 @@ impl Instance {
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/user#get-user> and
|
/// See <https://discord-userdoccers.vercel.app/resources/user#get-user> and
|
||||||
/// <https://discord-userdoccers.vercel.app/resources/user#get-current-user>
|
/// <https://discord-userdoccers.vercel.app/resources/user#get-current-user>
|
||||||
pub async fn get_user(&mut self, token: String, id: Option<&String>) -> ChorusResult<User> {
|
pub async fn get_user(&mut self, token: String, id: Option<&String>) -> ChorusResult<User> {
|
||||||
let mut user = UserMeta::shell(Rc::new(RefCell::new(self.clone())), token).await;
|
let mut user = ChorusUser::shell(Rc::new(RefCell::new(self.clone())), token).await;
|
||||||
let result = User::get(&mut user, id).await;
|
let result = User::get(&mut user, id).await;
|
||||||
if self.limits_information.is_some() {
|
if self.limits_information.is_some() {
|
||||||
self.limits_information.as_mut().unwrap().ratelimits =
|
self.limits_information.as_mut().unwrap().ratelimits =
|
||||||
|
|
|
@ -87,7 +87,7 @@ impl fmt::Display for Token {
|
||||||
/// A UserMeta is a representation of an authenticated user on an [Instance].
|
/// A UserMeta is a representation of an authenticated user on an [Instance].
|
||||||
/// It is used for most authenticated actions on a Spacebar server.
|
/// It is used for most authenticated actions on a Spacebar server.
|
||||||
/// It also has its own [Gateway] connection.
|
/// It also has its own [Gateway] connection.
|
||||||
pub struct UserMeta {
|
pub struct ChorusUser {
|
||||||
pub belongs_to: Rc<RefCell<Instance>>,
|
pub belongs_to: Rc<RefCell<Instance>>,
|
||||||
pub token: String,
|
pub token: String,
|
||||||
pub limits: Option<HashMap<LimitType, Limit>>,
|
pub limits: Option<HashMap<LimitType, Limit>>,
|
||||||
|
@ -96,7 +96,7 @@ pub struct UserMeta {
|
||||||
pub gateway: GatewayHandle,
|
pub gateway: GatewayHandle,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UserMeta {
|
impl ChorusUser {
|
||||||
pub fn token(&self) -> String {
|
pub fn token(&self) -> String {
|
||||||
self.token.clone()
|
self.token.clone()
|
||||||
}
|
}
|
||||||
|
@ -117,8 +117,8 @@ impl UserMeta {
|
||||||
settings: Arc<RwLock<UserSettings>>,
|
settings: Arc<RwLock<UserSettings>>,
|
||||||
object: Arc<RwLock<User>>,
|
object: Arc<RwLock<User>>,
|
||||||
gateway: GatewayHandle,
|
gateway: GatewayHandle,
|
||||||
) -> UserMeta {
|
) -> ChorusUser {
|
||||||
UserMeta {
|
ChorusUser {
|
||||||
belongs_to,
|
belongs_to,
|
||||||
token,
|
token,
|
||||||
limits,
|
limits,
|
||||||
|
@ -133,13 +133,13 @@ impl UserMeta {
|
||||||
/// registering or logging in to the Instance, where you do not yet have a User object, but still
|
/// registering or logging in to the Instance, where you do not yet have a User object, but still
|
||||||
/// need to make a RateLimited request. To use the [`GatewayHandle`], you will have to identify
|
/// need to make a RateLimited request. To use the [`GatewayHandle`], you will have to identify
|
||||||
/// first.
|
/// first.
|
||||||
pub(crate) async fn shell(instance: Rc<RefCell<Instance>>, token: String) -> UserMeta {
|
pub(crate) async fn shell(instance: Rc<RefCell<Instance>>, token: String) -> ChorusUser {
|
||||||
let settings = Arc::new(RwLock::new(UserSettings::default()));
|
let settings = Arc::new(RwLock::new(UserSettings::default()));
|
||||||
let object = Arc::new(RwLock::new(User::default()));
|
let object = Arc::new(RwLock::new(User::default()));
|
||||||
let wss_url = instance.borrow().urls.wss.clone();
|
let wss_url = instance.borrow().urls.wss.clone();
|
||||||
// Dummy gateway object
|
// Dummy gateway object
|
||||||
let gateway = Gateway::new(wss_url).await.unwrap();
|
let gateway = Gateway::new(wss_url).await.unwrap();
|
||||||
UserMeta {
|
ChorusUser {
|
||||||
token,
|
token,
|
||||||
belongs_to: instance.clone(),
|
belongs_to: instance.clone(),
|
||||||
limits: instance
|
limits: instance
|
||||||
|
|
|
@ -8,7 +8,7 @@ use serde_json::from_str;
|
||||||
use crate::{
|
use crate::{
|
||||||
api::{Limit, LimitType},
|
api::{Limit, LimitType},
|
||||||
errors::{ChorusError, ChorusResult},
|
errors::{ChorusError, ChorusResult},
|
||||||
instance::UserMeta,
|
instance::ChorusUser,
|
||||||
types::{types::subconfigs::limits::rates::RateLimits, LimitsConfiguration},
|
types::{types::subconfigs::limits::rates::RateLimits, LimitsConfiguration},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ impl ChorusRequest {
|
||||||
/// If the user is not rate limited and the instance has rate limits enabled, it will update the
|
/// If the user is not rate limited and the instance has rate limits enabled, it will update the
|
||||||
/// rate limits.
|
/// rate limits.
|
||||||
#[allow(clippy::await_holding_refcell_ref)]
|
#[allow(clippy::await_holding_refcell_ref)]
|
||||||
pub(crate) async fn send_request(self, user: &mut UserMeta) -> ChorusResult<Response> {
|
pub(crate) async fn send_request(self, user: &mut ChorusUser) -> ChorusResult<Response> {
|
||||||
if !ChorusRequest::can_send_request(user, &self.limit_type) {
|
if !ChorusRequest::can_send_request(user, &self.limit_type) {
|
||||||
log::info!("Rate limit hit. Bucket: {:?}", self.limit_type);
|
log::info!("Rate limit hit. Bucket: {:?}", self.limit_type);
|
||||||
return Err(ChorusError::RateLimited {
|
return Err(ChorusError::RateLimited {
|
||||||
|
@ -73,7 +73,7 @@ impl ChorusRequest {
|
||||||
Ok(result)
|
Ok(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn can_send_request(user: &mut UserMeta, limit_type: &LimitType) -> bool {
|
fn can_send_request(user: &mut ChorusUser, limit_type: &LimitType) -> bool {
|
||||||
log::trace!("Checking if user or instance is rate-limited...");
|
log::trace!("Checking if user or instance is rate-limited...");
|
||||||
let mut belongs_to = user.belongs_to.borrow_mut();
|
let mut belongs_to = user.belongs_to.borrow_mut();
|
||||||
if belongs_to.limits_information.is_none() {
|
if belongs_to.limits_information.is_none() {
|
||||||
|
@ -236,7 +236,7 @@ impl ChorusRequest {
|
||||||
/// set to the current unix timestamp + the rate limit window. The remaining rate limit is
|
/// set to the current unix timestamp + the rate limit window. The remaining rate limit is
|
||||||
/// reset to the rate limit limit.
|
/// reset to the rate limit limit.
|
||||||
/// 2. The remaining rate limit is decreased by 1.
|
/// 2. The remaining rate limit is decreased by 1.
|
||||||
fn update_rate_limits(user: &mut UserMeta, limit_type: &LimitType, response_was_err: bool) {
|
fn update_rate_limits(user: &mut ChorusUser, limit_type: &LimitType, response_was_err: bool) {
|
||||||
if user.belongs_to.borrow().limits_information.is_none() {
|
if user.belongs_to.borrow().limits_information.is_none() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -429,7 +429,7 @@ impl ChorusRequest {
|
||||||
|
|
||||||
/// Sends a [`ChorusRequest`] and returns a [`ChorusResult`] that contains nothing if the request
|
/// Sends a [`ChorusRequest`] and returns a [`ChorusResult`] that contains nothing if the request
|
||||||
/// was successful, or a [`ChorusError`] if the request failed.
|
/// was successful, or a [`ChorusError`] if the request failed.
|
||||||
pub(crate) async fn handle_request_as_result(self, user: &mut UserMeta) -> ChorusResult<()> {
|
pub(crate) async fn handle_request_as_result(self, user: &mut ChorusUser) -> ChorusResult<()> {
|
||||||
match self.send_request(user).await {
|
match self.send_request(user).await {
|
||||||
Ok(_) => Ok(()),
|
Ok(_) => Ok(()),
|
||||||
Err(e) => Err(e),
|
Err(e) => Err(e),
|
||||||
|
@ -440,7 +440,7 @@ impl ChorusRequest {
|
||||||
/// was successful, or a [`ChorusError`] if the request failed.
|
/// was successful, or a [`ChorusError`] if the request failed.
|
||||||
pub(crate) async fn deserialize_response<T: for<'a> Deserialize<'a>>(
|
pub(crate) async fn deserialize_response<T: for<'a> Deserialize<'a>>(
|
||||||
self,
|
self,
|
||||||
user: &mut UserMeta,
|
user: &mut ChorusUser,
|
||||||
) -> ChorusResult<T> {
|
) -> ChorusResult<T> {
|
||||||
let response = self.send_request(user).await?;
|
let response = self.send_request(user).await?;
|
||||||
debug!("Got response: {:?}", response);
|
debug!("Got response: {:?}", response);
|
||||||
|
|
|
@ -2,7 +2,7 @@ use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
use chorus::gateway::Gateway;
|
use chorus::gateway::Gateway;
|
||||||
use chorus::{
|
use chorus::{
|
||||||
instance::{Instance, UserMeta},
|
instance::{ChorusUser, Instance},
|
||||||
types::{
|
types::{
|
||||||
Channel, ChannelCreateSchema, Guild, GuildCreateSchema, RegisterSchema,
|
Channel, ChannelCreateSchema, Guild, GuildCreateSchema, RegisterSchema,
|
||||||
RoleCreateModifySchema, RoleObject,
|
RoleCreateModifySchema, RoleObject,
|
||||||
|
@ -14,7 +14,7 @@ use chorus::{
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub(crate) struct TestBundle {
|
pub(crate) struct TestBundle {
|
||||||
pub urls: UrlBundle,
|
pub urls: UrlBundle,
|
||||||
pub user: UserMeta,
|
pub user: ChorusUser,
|
||||||
pub instance: Instance,
|
pub instance: Instance,
|
||||||
pub guild: Arc<RwLock<Guild>>,
|
pub guild: Arc<RwLock<Guild>>,
|
||||||
pub role: Arc<RwLock<RoleObject>>,
|
pub role: Arc<RwLock<RoleObject>>,
|
||||||
|
@ -23,7 +23,7 @@ pub(crate) struct TestBundle {
|
||||||
|
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
impl TestBundle {
|
impl TestBundle {
|
||||||
pub(crate) async fn create_user(&mut self, username: &str) -> UserMeta {
|
pub(crate) async fn create_user(&mut self, username: &str) -> ChorusUser {
|
||||||
let register_schema = RegisterSchema {
|
let register_schema = RegisterSchema {
|
||||||
username: username.to_string(),
|
username: username.to_string(),
|
||||||
consent: true,
|
consent: true,
|
||||||
|
@ -35,8 +35,8 @@ impl TestBundle {
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
pub(crate) async fn clone_user_without_gateway(&self) -> UserMeta {
|
pub(crate) async fn clone_user_without_gateway(&self) -> ChorusUser {
|
||||||
UserMeta {
|
ChorusUser {
|
||||||
belongs_to: self.user.belongs_to.clone(),
|
belongs_to: self.user.belongs_to.clone(),
|
||||||
token: self.user.token.clone(),
|
token: self.user.token.clone(),
|
||||||
limits: self.user.limits.clone(),
|
limits: self.user.limits.clone(),
|
||||||
|
|
Loading…
Reference in New Issue