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