neptunium_http/endpoints/guild/members/
list_guild_members.rs1use 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 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}