Skip to main content

neptunium_http/endpoints/guild/members/
list_guild_members.rs

1use std::collections::HashMap;
2
3use bon::Builder;
4use neptunium_model::{
5    guild::member::GuildMember,
6    id::{
7        Id,
8        marker::{GuildMarker, UserMarker},
9    },
10};
11use reqwest::Method;
12
13use crate::{endpoints::Endpoint, request::Request};
14
15#[derive(Builder, Copy, Clone, Debug)]
16pub struct ListGuildMembers {
17    pub guild_id: Id<GuildMarker>,
18    /// 1-1000, maximum number of users to return. The default is 1.
19    pub limit: Option<u16>,
20    pub after: Option<Id<UserMarker>>,
21}
22
23impl Endpoint for ListGuildMembers {
24    type Response = Vec<GuildMember>;
25
26    fn into_request(self) -> crate::request::Request {
27        let mut params = HashMap::new();
28        if let Some(limit) = self.limit {
29            params.insert("limit".to_owned(), limit.to_string());
30        }
31        if let Some(after) = self.after {
32            params.insert("after".to_owned(), after.to_string());
33        }
34
35        Request::builder()
36            .method(Method::GET)
37            .params(params)
38            .path(format!("/guilds/{}/members", self.guild_id))
39            .build()
40    }
41}