box_open_sdk/managers/
task_assignments.rs1use crate::internal::path_escape;
4use crate::runtime::{self, Error};
5
6pub struct TaskAssignmentsManager {
8 session: std::sync::Arc<runtime::Client>,
9}
10
11impl TaskAssignmentsManager {
12 pub(crate) fn new(session: std::sync::Arc<runtime::Client>) -> Self {
13 Self { session }
14 }
15
16 pub async fn list_task_assignments(
17 &self,
18 task_id: String,
19 ) -> Result<crate::models::schemas::TaskAssignments, Error> {
20 let mut url = self.session.base_url("api");
21 url.push_str("/tasks");
22 url.push('/');
23 let seg = path_escape(&task_id);
24 url.push_str(&seg);
25 url.push_str("/assignments");
26 let req = self.session.new_request("GET", &url);
27 let resp = self.session.fetch(req).await?;
28 let data = runtime::response_bytes(&resp)?;
29 Ok(serde_json::from_slice(&data)?)
30 }
31
32 pub async fn create(
33 &self,
34 body: crate::models::schemas::CreateTaskAssignmentRequest,
35 ) -> Result<crate::models::schemas::TaskAssignment, Error> {
36 let mut url = self.session.base_url("api");
37 url.push_str("/task_assignments");
38 let mut req = self.session.new_request("POST", &url);
39 let payload = serde_json::to_vec(&body)?;
40 req = runtime::with_json_body(req, &payload);
41 let resp = self.session.fetch(req).await?;
42 let data = runtime::response_bytes(&resp)?;
43 Ok(serde_json::from_slice(&data)?)
44 }
45
46 pub async fn get(
47 &self,
48 task_assignment_id: String,
49 ) -> Result<crate::models::schemas::TaskAssignment, Error> {
50 let mut url = self.session.base_url("api");
51 url.push_str("/task_assignments");
52 url.push('/');
53 let seg = path_escape(&task_assignment_id);
54 url.push_str(&seg);
55 let req = self.session.new_request("GET", &url);
56 let resp = self.session.fetch(req).await?;
57 let data = runtime::response_bytes(&resp)?;
58 Ok(serde_json::from_slice(&data)?)
59 }
60
61 pub async fn update(
62 &self,
63 task_assignment_id: String,
64 body: crate::models::schemas::UpdateTaskAssignmentRequest,
65 ) -> Result<crate::models::schemas::TaskAssignment, Error> {
66 let mut url = self.session.base_url("api");
67 url.push_str("/task_assignments");
68 url.push('/');
69 let seg = path_escape(&task_assignment_id);
70 url.push_str(&seg);
71 let mut req = self.session.new_request("PUT", &url);
72 let payload = serde_json::to_vec(&body)?;
73 req = runtime::with_json_body(req, &payload);
74 let resp = self.session.fetch(req).await?;
75 let data = runtime::response_bytes(&resp)?;
76 Ok(serde_json::from_slice(&data)?)
77 }
78
79 pub async fn delete(&self, task_assignment_id: String) -> Result<(), Error> {
80 let mut url = self.session.base_url("api");
81 url.push_str("/task_assignments");
82 url.push('/');
83 let seg = path_escape(&task_assignment_id);
84 url.push_str(&seg);
85 let req = self.session.new_request("DELETE", &url);
86 let _ = self.session.fetch(req).await?;
87 Ok(())
88 }
89}