context69_sdk/client/groups/
members.rs1use 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}