paperless_rs/endpoint/
mod.rs

1pub 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}