context69_sdk/client/groups/
source_folders.rs1use context69_contracts::{
2 CreateSourceFolderRequest, SourceConfigInput, SourceFolderResponse, SyncOutcome,
3};
4use reqwest::Method;
5use uuid::Uuid;
6
7use super::Context69Client;
8use crate::{Error, client::transport::group_path};
9
10pub struct GroupSourceFoldersApi<'a> {
11 client: &'a Context69Client,
12 group_path: String,
13}
14
15impl<'a> GroupSourceFoldersApi<'a> {
16 pub(super) fn new(client: &'a Context69Client, group_path: String) -> Self {
17 Self { client, group_path }
18 }
19
20 pub async fn create(
21 &self,
22 request: &CreateSourceFolderRequest,
23 ) -> Result<SourceFolderResponse, Error> {
24 let path = group_path(&self.group_path, "/source-folders");
25 self.client
26 .execute_json(
27 self.client
28 .authorized_request(Method::POST, &path)
29 .await?
30 .json(request),
31 )
32 .await
33 }
34}
35
36pub struct GroupSourceFolderApi<'a> {
37 client: &'a Context69Client,
38 group_path: String,
39 folder_id: Uuid,
40}
41
42impl<'a> GroupSourceFolderApi<'a> {
43 pub(super) fn new(client: &'a Context69Client, group_path: String, folder_id: Uuid) -> Self {
44 Self {
45 client,
46 group_path,
47 folder_id,
48 }
49 }
50
51 pub async fn update(&self, request: &SourceConfigInput) -> Result<SourceFolderResponse, Error> {
52 let suffix = format!("/source-folders/{}/config", self.folder_id);
53 let path = group_path(&self.group_path, &suffix);
54 self.client
55 .execute_json(
56 self.client
57 .authorized_request(Method::PUT, &path)
58 .await?
59 .json(request),
60 )
61 .await
62 }
63
64 pub async fn sync(&self) -> Result<SyncOutcome, Error> {
65 let suffix = format!("/source-folders/{}/sync", self.folder_id);
66 let path = group_path(&self.group_path, &suffix);
67 self.client
68 .execute_json(self.client.authorized_request(Method::POST, &path).await?)
69 .await
70 }
71}