qb_api/
queries.rs

1//! data types for filtering and querying information from qbittorrent
2
3use derive_builder;
4use derive_builder::Builder;
5use serde::{Deserialize, Serialize};
6
7/// Getting log information
8#[derive(Debug, Builder, Default, Serialize)]
9pub struct LogRequest {
10    #[builder(default)]
11    normal: bool,
12    #[builder(default)]
13    info: bool,
14    #[builder(default)]
15    warning: bool,
16    #[builder(default)]
17    critical: bool,
18    #[builder(default)]
19    last_known_id: u64,
20}
21
22/// Filtering enum for use in making a `TorrentRequest`
23#[derive(Default, Debug, Deserialize, Serialize, Clone)]
24pub enum TorrentFilter {
25    #[serde(rename = "all")]
26    #[default]
27    All,
28    #[serde(rename = "downloading")]
29    Downloading,
30    #[serde(rename = "seeding")]
31    Seeding,
32    #[serde(rename = "completed")]
33    Completed,
34    #[serde(rename = "paused")]
35    Paused,
36    #[serde(rename = "active")]
37    Active,
38    #[serde(rename = "inactive")]
39    Inactive,
40    #[serde(rename = "resumed")]
41    Resumed,
42    #[serde(rename = "stalled")]
43    Stalled,
44    #[serde(rename = "stalled_uploading")]
45    StalledUploading,
46    #[serde(rename = "stalled_downloading")]
47    StalledDownloading,
48    #[serde(rename = "errored")]
49    Errored,
50}
51
52#[derive(Debug, Clone, Deserialize, Serialize, Builder, Default)]
53#[builder(setter(into, strip_option))]
54pub struct AddTorrent {
55    #[builder(default)]
56    urls: Option<String>,
57    #[builder(default)]
58    torrents: Option<Vec<u8>>,
59    #[builder(default)]
60    savepath: Option<String>,
61    #[builder(default)]
62    cookie: Option<String>,
63    #[builder(default)]
64    category: Option<String>,
65    #[builder(default)]
66    skip_checking: Option<String>,
67    #[builder(default)]
68    paused: Option<String>,
69    #[builder(default)]
70    root_folder: Option<String>,
71    #[builder(default)]
72    rename: Option<String>,
73    #[builder(default)]
74    #[serde(rename = "upLimit")]
75    upload_limit: Option<i64>,
76    #[builder(default)]
77    #[serde(rename = "dlLimit")]
78    download_limit: Option<i64>,
79    #[builder(default)]
80    #[serde(rename = "autoTMM")]
81    automatic_management: Option<bool>,
82    #[builder(default)]
83    #[serde(rename = "sequentialDownload")]
84    sequential_download: Option<String>,
85    #[builder(default)]
86    #[serde(rename = "firstLastPiecePrio")]
87    first_last_piece_prio: Option<String>,
88}
89
90//#[derive(Debug, Builder, Serialize, Deserialize, Clone, Default)]
91//#[builder(setter(into, strip_option))]
92//pub struct TorrentRequest {
93//    #[builder(default)]
94//    filter: Option<TorrentFilter>,
95//    #[builder(default)]
96//    category: Option<String>,
97//    #[builder(default)]
98//    tag: Option<String>,
99//    #[builder(default)]
100//    sort: Option<String>,
101//    #[builder(default)]
102//    reverse: Option<bool>,
103//    #[builder(default)]
104//    limit: Option<u64>,
105//    #[builder(default)]
106//    offset: Option<i64>,
107//    #[builder(default)]
108//    hashes: Vec<Hash>,
109//}