robespierre_http/
groups.rs1use robespierre_models::{
2 channels::Channel,
3 id::{ChannelId, UserId},
4 users::User,
5};
6
7use super::impl_prelude::*;
8
9impl Http {
10 pub async fn create_group(
12 &self,
13 name: String,
14 description: Option<String>,
15 nonce: String,
16 users: Option<&[UserId]>,
17 nsfw: Option<bool>,
18 ) -> Result<Channel> {
19 #[derive(serde::Serialize)]
20 struct CreateGroupRequest<'a> {
21 name: String,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 description: Option<String>,
24 nonce: String,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 users: Option<&'a [UserId]>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 nsfw: Option<bool>,
29 }
30 Ok(self
31 .client
32 .post(ep!(self, "/channels/create"))
33 .json(&CreateGroupRequest {
34 name,
35 description,
36 nonce,
37 users,
38 nsfw,
39 })
40 .send()
41 .await?
42 .error_for_status()?
43 .json()
44 .await?)
45 }
46
47 pub async fn fetch_group_members(&self, group: ChannelId) -> Result<Vec<User>> {
49 Ok(self
50 .client
51 .get(ep!(self, "/channels/{}/members" group))
52 .send()
53 .await?
54 .error_for_status()?
55 .json()
56 .await?)
57 }
58
59 }