qbit_api_rs/types/
search.rs

1use serde::{self, Deserialize, Serialize};
2
3/// # `api/v2/search/start`
4#[derive(Debug, Clone, Default, Serialize)]
5pub struct StartForm {
6    pub pattern: String,
7    pub plugins: String,
8    pub category: String,
9}
10
11/// # `api/v2/search/start`
12#[derive(Debug, Clone, Deserialize)]
13pub struct StartResponse {
14    pub id: u64,
15}
16
17/// # `/api/v2/search/stop`
18#[derive(Debug, Clone, Default, Serialize)]
19pub struct StopForm {
20    pub id: u64,
21}
22
23/// # `/api/v2/search/status`
24#[serde_with::skip_serializing_none]
25#[derive(Debug, Clone, Default, Serialize)]
26pub struct StatusQuery {
27    pub id: Option<u64>,
28}
29
30/// # `/api/v2/search/status`
31pub type StatusResponse = Vec<StatusResponseItem>;
32
33/// # `/api/v2/search/status`
34/// [`StatusResponse`]
35#[derive(Debug, Clone, Deserialize)]
36pub struct StatusResponseItem {
37    pub id: u64,
38    pub status: String,
39    pub total: u64,
40}
41
42/// # `/api/v2/search/results`
43#[serde_with::skip_serializing_none]
44#[derive(Debug, Clone, Default, Serialize)]
45pub struct ResultsQuery {
46    pub id: u64,
47    pub limit: Option<i64>,
48    pub offset: Option<i64>,
49}
50
51/// # `/api/v2/search/results`
52#[derive(Debug, Clone, Deserialize)]
53pub struct ResultsResponse {
54    pub results: Vec<ResultsResponseItem>,
55    pub status: String,
56    pub total: u64,
57}
58
59/// # `/api/v2/search/results`
60/// [`ResultsResponse`]
61#[derive(Debug, Clone, Deserialize)]
62#[serde(rename_all = "camelCase")]
63pub struct ResultsResponseItem {
64    pub descr_link: String,
65    pub file_name: String,
66    pub file_size: f64,
67    pub file_url: String,
68    pub nb_leechers: u64,
69    pub nb_seeders: u64,
70    pub site_url: String,
71}
72
73/// # `/api/v2/search/delete`
74#[derive(Debug, Clone, Default, Serialize)]
75pub struct DeleteForm {
76    pub id: u64,
77}