paperless_rs/endpoint/
config.rs

1use reqwest::Method;
2use serde::{Deserialize, Serialize};
3
4use crate::PaperlessClient;
5
6#[derive(Serialize, Deserialize, Debug)]
7pub struct Configuration {
8    id: u64,
9    user_args: Option<String>,
10    application_logo: Option<String>,
11    application_title: Option<String>,
12    output_type: Option<OutputType>,
13    mode: Option<Mode>,
14    clean: Option<Clean>,
15    rotate_page_threshold: Option<u64>,
16    ocr_arguments: Option<String>,
17    language: Option<String>,
18    skip_archive_file: Option<SkipArchiveFile>,
19    deskew: Option<bool>,
20    max_image_pixels: Option<u64>,
21    pages: Option<u64>,
22    images_dpi: Option<u64>,
23    rotate_pages: Option<bool>,
24    color_conversion_strategy: Option<ColorStrategy>,
25}
26
27#[derive(Serialize, Deserialize, Debug)]
28pub enum OutputType {
29    PDF,
30    PDFA,
31    PDFA1,
32    PDFA2,
33    PDFA3,
34}
35
36#[derive(Serialize, Deserialize, Debug)]
37pub enum Mode {
38    Skip,
39    Redo,
40    Force,
41    SkipNoArchive,
42}
43
44#[derive(Serialize, Deserialize, Debug)]
45pub enum Clean {
46    Clean,
47    CleanFinal,
48    None,
49}
50
51#[derive(Serialize, Deserialize, Debug)]
52pub enum SkipArchiveFile {
53    Never,
54    Always,
55    WithText,
56}
57
58#[derive(Serialize, Deserialize, Debug)]
59pub enum ColorStrategy {
60    RGB,
61    Gray,
62    CMYK,
63    LeaveColorUnchanged,
64    UseDeviceIndependentColor,
65}
66
67impl PaperlessClient {
68    pub async fn fetch_configuration(&self) -> Result<Configuration, Box<dyn std::error::Error>> {
69        let url = format!("{}/config/", self.base_url);
70
71        let request_builder = self.prepare_endpoint(Method::GET, url).await?;
72        self.call_endpoint(request_builder).await
73    }
74}