Skip to main content

context69_sdk/client/groups/
members.rs

1use context69_contracts::{GroupMemberResponse, UpsertMembershipRequest};
2use reqwest::Method;
3
4use super::Context69Client;
5use crate::{
6    Error,
7    client::transport::{encode_path_component, group_path},
8};
9
10pub struct GroupMembersApi<'a> {
11    client: &'a Context69Client,
12    group_path: String,
13}
14
15impl<'a> GroupMembersApi<'a> {
16    pub(super) fn new(client: &'a Context69Client, group_path: String) -> Self {
17        Self { client, group_path }
18    }
19
20    pub async fn list(&self) -> Result<Vec<GroupMemberResponse>, Error> {
21        let path = group_path(&self.group_path, "/members");
22        self.client
23            .execute_json(self.client.authorized_request(Method::GET, &path).await?)
24            .await
25    }
26
27    pub async fn upsert(&self, request: &UpsertMembershipRequest) -> Result<(), Error> {
28        let path = group_path(&self.group_path, "/members");
29        self.client
30            .execute_empty(
31                self.client
32                    .authorized_request(Method::POST, &path)
33                    .await?
34                    .json(request),
35            )
36            .await
37    }
38}
39
40pub struct GroupMemberApi<'a> {
41    client: &'a Context69Client,
42    group_path: String,
43    login_name: String,
44}
45
46impl<'a> GroupMemberApi<'a> {
47    pub(super) fn new(client: &'a Context69Client, group_path: String, login_name: String) -> Self {
48        Self {
49            client,
50            group_path,
51            login_name,
52        }
53    }
54
55    pub async fn delete(&self) -> Result<(), Error> {
56        let suffix = format!("/members/{}", encode_path_component(&self.login_name));
57        let path = group_path(&self.group_path, &suffix);
58        self.client
59            .execute_empty(
60                self.client
61                    .authorized_request(Method::DELETE, &path)
62                    .await?,
63            )
64            .await
65    }
66}