1use crate::Client;
2use anyhow::Result;
3#[derive(Clone, Debug)]
4pub struct WorkflowTriggers {
5 pub client: Client,
6}
7
8impl WorkflowTriggers {
9 #[doc(hidden)]
10 pub fn new(client: Client) -> Self {
11 Self { client }
12 }
13
14 #[doc = "Perform a `GET` request to `/api/workflow_triggers/`.\n\n**Parameters:**\n\n- `page: Option<i64>`: A page number within the paginated result set.\n- `page_size: Option<i64>`: Number of results to return per page.\n\n```rust,no_run\nuse futures_util::TryStreamExt;\nasync fn example_workflow_triggers_list_stream() -> anyhow::Result<()> {\n let client = paperless_api_client::Client::new_from_env();\n let mut workflow_triggers = client.workflow_triggers();\n let mut stream = workflow_triggers.list_stream(Some(4 as i64));\n loop {\n match stream.try_next().await {\n Ok(Some(item)) => {\n println!(\"{:?}\", item);\n }\n Ok(None) => {\n break;\n }\n Err(err) => {\n return Err(err.into());\n }\n }\n }\n\n Ok(())\n}\n```"]
15 #[tracing::instrument]
16 #[allow(non_snake_case)]
17 pub async fn list<'a>(
18 &'a self,
19 page: Option<i64>,
20 page_size: Option<i64>,
21 ) -> Result<crate::types::PaginatedWorkflowTriggerList, crate::types::error::Error> {
22 let mut req = self.client.client.request(
23 http::Method::GET,
24 format!("{}/{}", self.client.base_url, "api/workflow_triggers/"),
25 );
26 req = req.header("Authorization", format!("Token {}", &self.client.token));
27 let mut query_params = vec![];
28 if let Some(p) = page {
29 query_params.push(("page", format!("{p}")));
30 }
31
32 if let Some(p) = page_size {
33 query_params.push(("page_size", format!("{p}")));
34 }
35
36 req = req.query(&query_params);
37 let resp = req.send().await?;
38 let status = resp.status();
39 if status.is_success() {
40 let text = resp.text().await.unwrap_or_default();
41 serde_json::from_str(&text).map_err(|err| {
42 crate::types::error::Error::from_serde_error(
43 format_serde_error::SerdeError::new(text.to_string(), err),
44 status,
45 )
46 })
47 } else {
48 let text = resp.text().await.unwrap_or_default();
49 Err(crate::types::error::Error::Server {
50 body: text.to_string(),
51 status,
52 })
53 }
54 }
55
56 #[doc = "Perform a `GET` request to `/api/workflow_triggers/`.\n\n**Parameters:**\n\n- `page: Option<i64>`: A page number within the paginated result set.\n- `page_size: Option<i64>`: Number of results to return per page.\n\n```rust,no_run\nuse futures_util::TryStreamExt;\nasync fn example_workflow_triggers_list_stream() -> anyhow::Result<()> {\n let client = paperless_api_client::Client::new_from_env();\n let mut workflow_triggers = client.workflow_triggers();\n let mut stream = workflow_triggers.list_stream(Some(4 as i64));\n loop {\n match stream.try_next().await {\n Ok(Some(item)) => {\n println!(\"{:?}\", item);\n }\n Ok(None) => {\n break;\n }\n Err(err) => {\n return Err(err.into());\n }\n }\n }\n\n Ok(())\n}\n```"]
57 #[tracing::instrument]
58 #[cfg(not(feature = "js"))]
59 #[allow(non_snake_case)]
60 pub fn list_stream<'a>(
61 &'a self,
62 page_size: Option<i64>,
63 ) -> impl futures::Stream<Item = Result<crate::types::WorkflowTrigger, crate::types::error::Error>>
64 + Unpin
65 + '_ {
66 use crate::types::paginate::Pagination;
67 use futures::{StreamExt, TryFutureExt, TryStreamExt};
68 self.list(None, page_size)
69 .map_ok(move |result| {
70 let items = futures::stream::iter(result.items().into_iter().map(Ok));
71 let next_pages = futures::stream::try_unfold(
72 (None, result),
73 move |(prev_page_token, new_result)| async move {
74 if new_result.has_more_pages()
75 && !new_result.items().is_empty()
76 && prev_page_token != new_result.next_page_token()
77 {
78 async {
79 let mut req = self.client.client.request(
80 http::Method::GET,
81 format!(
82 "{}/{}",
83 self.client.base_url, "api/workflow_triggers/"
84 ),
85 );
86 req = req.header(
87 "Authorization",
88 format!("Token {}", &self.client.token),
89 );
90 let mut request = req.build()?;
91 request = new_result.next_page(request)?;
92 let resp = self.client.client.execute(request).await?;
93 let status = resp.status();
94 if status.is_success() {
95 let text = resp.text().await.unwrap_or_default();
96 serde_json::from_str(&text).map_err(|err| {
97 crate::types::error::Error::from_serde_error(
98 format_serde_error::SerdeError::new(
99 text.to_string(),
100 err,
101 ),
102 status,
103 )
104 })
105 } else {
106 let text = resp.text().await.unwrap_or_default();
107 Err(crate::types::error::Error::Server {
108 body: text.to_string(),
109 status,
110 })
111 }
112 }
113 .map_ok(|result: crate::types::PaginatedWorkflowTriggerList| {
114 Some((
115 futures::stream::iter(result.items().into_iter().map(Ok)),
116 (new_result.next_page_token(), result),
117 ))
118 })
119 .await
120 } else {
121 Ok(None)
122 }
123 },
124 )
125 .try_flatten();
126 items.chain(next_pages)
127 })
128 .try_flatten_stream()
129 .boxed()
130 }
131
132 #[doc = "Perform a `POST` request to `/api/workflow_triggers/`.\n\n```rust,no_run\nasync fn example_workflow_triggers_create() -> anyhow::Result<()> {\n let client = paperless_api_client::Client::new_from_env();\n let result: paperless_api_client::types::WorkflowTrigger = client\n .workflow_triggers()\n .create(&paperless_api_client::types::WorkflowTriggerRequest {\n id: Some(4 as i64),\n sources: vec![4 as i64],\n type_: 4 as i64,\n filter_path: Some(\"some-string\".to_string()),\n filter_filename: Some(\"some-string\".to_string()),\n filter_mailrule: Some(4 as i64),\n matching_algorithm: Some(4 as i64),\n match_: Some(\"some-string\".to_string()),\n is_insensitive: Some(true),\n filter_has_tags: Some(vec![4 as i64]),\n filter_has_correspondent: Some(4 as i64),\n filter_has_document_type: Some(4 as i64),\n schedule_offset_days: Some(4 as i64),\n schedule_is_recurring: Some(true),\n schedule_recurring_interval_days: Some(4 as i64),\n schedule_date_field: Some(paperless_api_client::types::ScheduleDateFieldEnum::Modified),\n schedule_date_custom_field: Some(4 as i64),\n })\n .await?;\n println!(\"{:?}\", result);\n Ok(())\n}\n```"]
133 #[tracing::instrument]
134 #[allow(non_snake_case)]
135 pub async fn create<'a>(
136 &'a self,
137 body: &crate::types::WorkflowTriggerRequest,
138 ) -> Result<crate::types::WorkflowTrigger, crate::types::error::Error> {
139 let mut req = self.client.client.request(
140 http::Method::POST,
141 format!("{}/{}", self.client.base_url, "api/workflow_triggers/"),
142 );
143 req = req.header("Authorization", format!("Token {}", &self.client.token));
144 req = req.json(body);
145 let resp = req.send().await?;
146 let status = resp.status();
147 if status.is_success() {
148 let text = resp.text().await.unwrap_or_default();
149 serde_json::from_str(&text).map_err(|err| {
150 crate::types::error::Error::from_serde_error(
151 format_serde_error::SerdeError::new(text.to_string(), err),
152 status,
153 )
154 })
155 } else {
156 let text = resp.text().await.unwrap_or_default();
157 Err(crate::types::error::Error::Server {
158 body: text.to_string(),
159 status,
160 })
161 }
162 }
163
164 #[doc = "Perform a `GET` request to `/api/workflow_triggers/{id}/`.\n\n**Parameters:**\n\n- `id: i64`: A unique integer value identifying this workflow trigger. (required)\n\n```rust,no_run\nasync fn example_workflow_triggers_retrieve() -> anyhow::Result<()> {\n let client = paperless_api_client::Client::new_from_env();\n let result: paperless_api_client::types::WorkflowTrigger =\n client.workflow_triggers().retrieve(4 as i64).await?;\n println!(\"{:?}\", result);\n Ok(())\n}\n```"]
165 #[tracing::instrument]
166 #[allow(non_snake_case)]
167 pub async fn retrieve<'a>(
168 &'a self,
169 id: i64,
170 ) -> Result<crate::types::WorkflowTrigger, crate::types::error::Error> {
171 let mut req = self.client.client.request(
172 http::Method::GET,
173 format!(
174 "{}/{}",
175 self.client.base_url,
176 "api/workflow_triggers/{id}/".replace("{id}", &format!("{id}"))
177 ),
178 );
179 req = req.header("Authorization", format!("Token {}", &self.client.token));
180 let resp = req.send().await?;
181 let status = resp.status();
182 if status.is_success() {
183 let text = resp.text().await.unwrap_or_default();
184 serde_json::from_str(&text).map_err(|err| {
185 crate::types::error::Error::from_serde_error(
186 format_serde_error::SerdeError::new(text.to_string(), err),
187 status,
188 )
189 })
190 } else {
191 let text = resp.text().await.unwrap_or_default();
192 Err(crate::types::error::Error::Server {
193 body: text.to_string(),
194 status,
195 })
196 }
197 }
198
199 #[doc = "Perform a `PUT` request to `/api/workflow_triggers/{id}/`.\n\n**Parameters:**\n\n- `id: i64`: A unique integer value identifying this workflow trigger. (required)\n\n```rust,no_run\nasync fn example_workflow_triggers_update() -> anyhow::Result<()> {\n let client = paperless_api_client::Client::new_from_env();\n let result: paperless_api_client::types::WorkflowTrigger = client\n .workflow_triggers()\n .update(\n 4 as i64,\n &paperless_api_client::types::WorkflowTriggerRequest {\n id: Some(4 as i64),\n sources: vec![4 as i64],\n type_: 4 as i64,\n filter_path: Some(\"some-string\".to_string()),\n filter_filename: Some(\"some-string\".to_string()),\n filter_mailrule: Some(4 as i64),\n matching_algorithm: Some(4 as i64),\n match_: Some(\"some-string\".to_string()),\n is_insensitive: Some(true),\n filter_has_tags: Some(vec![4 as i64]),\n filter_has_correspondent: Some(4 as i64),\n filter_has_document_type: Some(4 as i64),\n schedule_offset_days: Some(4 as i64),\n schedule_is_recurring: Some(true),\n schedule_recurring_interval_days: Some(4 as i64),\n schedule_date_field: Some(paperless_api_client::types::ScheduleDateFieldEnum::Modified),\n schedule_date_custom_field: Some(4 as i64),\n },\n )\n .await?;\n println!(\"{:?}\", result);\n Ok(())\n}\n```"]
200 #[tracing::instrument]
201 #[allow(non_snake_case)]
202 pub async fn update<'a>(
203 &'a self,
204 id: i64,
205 body: &crate::types::WorkflowTriggerRequest,
206 ) -> Result<crate::types::WorkflowTrigger, crate::types::error::Error> {
207 let mut req = self.client.client.request(
208 http::Method::PUT,
209 format!(
210 "{}/{}",
211 self.client.base_url,
212 "api/workflow_triggers/{id}/".replace("{id}", &format!("{id}"))
213 ),
214 );
215 req = req.header("Authorization", format!("Token {}", &self.client.token));
216 req = req.json(body);
217 let resp = req.send().await?;
218 let status = resp.status();
219 if status.is_success() {
220 let text = resp.text().await.unwrap_or_default();
221 serde_json::from_str(&text).map_err(|err| {
222 crate::types::error::Error::from_serde_error(
223 format_serde_error::SerdeError::new(text.to_string(), err),
224 status,
225 )
226 })
227 } else {
228 let text = resp.text().await.unwrap_or_default();
229 Err(crate::types::error::Error::Server {
230 body: text.to_string(),
231 status,
232 })
233 }
234 }
235
236 #[doc = "Perform a `DELETE` request to `/api/workflow_triggers/{id}/`.\n\n**Parameters:**\n\n- `id: i64`: A unique integer value identifying this workflow trigger. (required)\n\n```rust,no_run\nasync fn example_workflow_triggers_destroy() -> anyhow::Result<()> {\n let client = paperless_api_client::Client::new_from_env();\n client.workflow_triggers().destroy(4 as i64).await?;\n Ok(())\n}\n```"]
237 #[tracing::instrument]
238 #[allow(non_snake_case)]
239 pub async fn destroy<'a>(&'a self, id: i64) -> Result<(), crate::types::error::Error> {
240 let mut req = self.client.client.request(
241 http::Method::DELETE,
242 format!(
243 "{}/{}",
244 self.client.base_url,
245 "api/workflow_triggers/{id}/".replace("{id}", &format!("{id}"))
246 ),
247 );
248 req = req.header("Authorization", format!("Token {}", &self.client.token));
249 let resp = req.send().await?;
250 let status = resp.status();
251 if status.is_success() {
252 Ok(())
253 } else {
254 let text = resp.text().await.unwrap_or_default();
255 Err(crate::types::error::Error::Server {
256 body: text.to_string(),
257 status,
258 })
259 }
260 }
261
262 #[doc = "Perform a `PATCH` request to `/api/workflow_triggers/{id}/`.\n\n**Parameters:**\n\n- `id: i64`: A unique integer value identifying this workflow trigger. (required)\n\n```rust,no_run\nasync fn example_workflow_triggers_partial_update() -> anyhow::Result<()> {\n let client = paperless_api_client::Client::new_from_env();\n let result: paperless_api_client::types::WorkflowTrigger = client\n .workflow_triggers()\n .partial_update(\n 4 as i64,\n &paperless_api_client::types::PatchedWorkflowTriggerRequest {\n id: Some(4 as i64),\n sources: vec![4 as i64],\n type_: Some(4 as i64),\n filter_path: Some(\"some-string\".to_string()),\n filter_filename: Some(\"some-string\".to_string()),\n filter_mailrule: Some(4 as i64),\n matching_algorithm: Some(4 as i64),\n match_: Some(\"some-string\".to_string()),\n is_insensitive: Some(true),\n filter_has_tags: Some(vec![4 as i64]),\n filter_has_correspondent: Some(4 as i64),\n filter_has_document_type: Some(4 as i64),\n schedule_offset_days: Some(4 as i64),\n schedule_is_recurring: Some(true),\n schedule_recurring_interval_days: Some(4 as i64),\n schedule_date_field: Some(paperless_api_client::types::ScheduleDateFieldEnum::Modified),\n schedule_date_custom_field: Some(4 as i64),\n },\n )\n .await?;\n println!(\"{:?}\", result);\n Ok(())\n}\n```"]
263 #[tracing::instrument]
264 #[allow(non_snake_case)]
265 pub async fn partial_update<'a>(
266 &'a self,
267 id: i64,
268 body: &crate::types::PatchedWorkflowTriggerRequest,
269 ) -> Result<crate::types::WorkflowTrigger, crate::types::error::Error> {
270 let mut req = self.client.client.request(
271 http::Method::PATCH,
272 format!(
273 "{}/{}",
274 self.client.base_url,
275 "api/workflow_triggers/{id}/".replace("{id}", &format!("{id}"))
276 ),
277 );
278 req = req.header("Authorization", format!("Token {}", &self.client.token));
279 req = req.json(body);
280 let resp = req.send().await?;
281 let status = resp.status();
282 if status.is_success() {
283 let text = resp.text().await.unwrap_or_default();
284 serde_json::from_str(&text).map_err(|err| {
285 crate::types::error::Error::from_serde_error(
286 format_serde_error::SerdeError::new(text.to_string(), err),
287 status,
288 )
289 })
290 } else {
291 let text = resp.text().await.unwrap_or_default();
292 Err(crate::types::error::Error::Server {
293 body: text.to_string(),
294 status,
295 })
296 }
297 }
298}