Add get user guilds endpoint
This commit is contained in:
parent
582db9486f
commit
895dea3780
|
@ -1,10 +1,11 @@
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use serde_json::to_string;
|
use serde_json::to_string;
|
||||||
|
|
||||||
|
use crate::api::LimitType;
|
||||||
use crate::errors::ChorusResult;
|
use crate::errors::ChorusResult;
|
||||||
use crate::instance::UserMeta;
|
use crate::instance::UserMeta;
|
||||||
use crate::ratelimiter::ChorusRequest;
|
use crate::ratelimiter::ChorusRequest;
|
||||||
use crate::types::Snowflake;
|
use crate::types::{GetUserGuildSchema, Guild, Snowflake};
|
||||||
|
|
||||||
impl UserMeta {
|
impl UserMeta {
|
||||||
/// Leaves a given guild.
|
/// Leaves a given guild.
|
||||||
|
@ -30,4 +31,28 @@ impl UserMeta {
|
||||||
.handle_request_as_result(self)
|
.handle_request_as_result(self)
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns a list of user guild objects representing the guilds the current user is a member of.
|
||||||
|
/// This endpoint returns 200 guilds by default
|
||||||
|
///
|
||||||
|
/// # Reference:
|
||||||
|
/// See: <https://discord-userdoccers.vercel.app/resources/guild#get-user-guilds>
|
||||||
|
pub async fn get_guilds(
|
||||||
|
&mut self,
|
||||||
|
query: Option<GetUserGuildSchema>,
|
||||||
|
) -> ChorusResult<Vec<Guild>> {
|
||||||
|
let url = format!("{}/users/@me/guilds", self.belongs_to.borrow().urls.api,);
|
||||||
|
let chorus_request = ChorusRequest {
|
||||||
|
request: Client::new()
|
||||||
|
.get(url)
|
||||||
|
.header("Authorization", self.token())
|
||||||
|
.header("Content-Type", "application/json")
|
||||||
|
.body(to_string(&query).unwrap()),
|
||||||
|
|
||||||
|
limit_type: LimitType::Global,
|
||||||
|
};
|
||||||
|
chorus_request
|
||||||
|
.deserialize_response::<Vec<Guild>>(self)
|
||||||
|
.await
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
use std::default;
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::types::entities::Channel;
|
use crate::types::entities::Channel;
|
||||||
|
@ -56,3 +58,22 @@ pub struct GuildModifySchema {
|
||||||
pub preferred_locale: Option<String>,
|
pub preferred_locale: Option<String>,
|
||||||
pub premium_progress_bar_enabled: Option<bool>,
|
pub premium_progress_bar_enabled: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize, Serialize, Clone, Eq, PartialEq, Ord, PartialOrd)]
|
||||||
|
pub struct GetUserGuildSchema {
|
||||||
|
pub before: Option<Snowflake>,
|
||||||
|
pub after: Option<Snowflake>,
|
||||||
|
pub limit: Option<u8>,
|
||||||
|
pub with_counts: Option<bool>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::default::Default for GetUserGuildSchema {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
before: Default::default(),
|
||||||
|
after: Default::default(),
|
||||||
|
limit: Some(200),
|
||||||
|
with_counts: Some(false),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue