paperless_rs/endpoint/
mod.rs1pub mod config;
2pub mod correspondents;
3pub mod document_types;
4pub mod documents;
5pub mod tags;
6
7use reqwest::Method;
8use serde::{Deserialize, Serialize};
9
10use crate::PaperlessClient;
11
12#[derive(Serialize, Deserialize, Debug)]
13pub struct Task {
14 pub id: u64,
15 pub task_id: String,
16 pub task_file_name: String,
17
18 pub date_created: String,
19 pub date_done: Option<String>,
20
21 #[serde(rename = "type")]
22 pub task_type: String,
23 pub status: String,
24 pub result: Option<String>,
25 pub acknowledged: bool,
26 pub related_document: Option<String>,
27}
28
29impl PaperlessClient {
30 pub async fn search_autocomplete(
31 &self,
32 term: &str,
33 ) -> Result<Vec<String>, Box<dyn std::error::Error>> {
34 let url = format!("{}/search/autocomplete/?term={}", self.base_url, term);
35
36 let request_builder = self.prepare_endpoint(Method::GET, url).await?;
37 self.call_endpoint(request_builder).await
38 }
39
40 pub async fn fetch_logs_producers(&self) -> Result<Vec<String>, Box<dyn std::error::Error>> {
41 let url = format!("{}/logs/", self.base_url);
42
43 let request_builder = self.prepare_endpoint(Method::GET, url).await?;
44 self.call_endpoint(request_builder).await
45 }
46
47 pub async fn fetch_logs(
48 &self,
49 producer: &str,
50 ) -> Result<Vec<String>, Box<dyn std::error::Error>> {
51 let url = format!("{}/logs/{}/", self.base_url, producer);
52
53 let request_builder = self.prepare_endpoint(Method::GET, url).await?;
54 self.call_endpoint(request_builder).await
55 }
56
57 pub async fn fetch_tasks(&self) -> Result<Vec<Task>, Box<dyn std::error::Error>> {
58 let url = format!("{}/tasks/", self.base_url);
59
60 let request_builder = self.prepare_endpoint(Method::GET, url).await?;
61 self.call_endpoint(request_builder).await
62 }
63
64 pub async fn fetch_task(&self, task_id: &str) -> Result<Task, Box<dyn std::error::Error>> {
65 let url = format!("{}/tasks/{}/", self.base_url, task_id);
66
67 let request_builder = self.prepare_endpoint(Method::GET, url).await?;
68 self.call_endpoint(request_builder).await
69 }
70}