1use super::torrents::{CategoriesResponse, InfoState};
2use super::transfer::ConnectionStatus;
3use serde::{self, Deserialize, Serialize};
4use std::collections::HashMap;
5
6#[derive(Debug, Clone, Default, Serialize)]
8pub struct MaindataQuery {
9 pub rid: u64,
10}
11
12#[derive(Debug, Clone, Deserialize)]
14pub struct MaindataResponse {
15 pub rid: u64,
16 pub full_update: Option<bool>,
17 pub torrents: Option<MaindataTorrentsResponse>,
18 pub torrents_removed: Option<Vec<String>>,
19 pub categories: Option<CategoriesResponse>, pub categories_removed: Option<Vec<String>>,
21 pub tags: Option<Vec<String>>,
22 pub tags_removed: Option<Vec<String>>,
23 pub queueing: Option<bool>,
24 pub server_state: Option<ServerState>, }
26
27#[derive(Debug, Clone, Deserialize)]
30#[serde(transparent)]
31pub struct MaindataTorrentsResponse {
32 pub data: HashMap<String, MaindataTorrentsResponseItem>,
33}
34
35#[derive(Debug, Clone, Deserialize)]
40pub struct MaindataTorrentsResponseItem {
41 pub added_on: Option<u64>,
42 pub amount_left: Option<u64>,
43 pub auto_tmm: Option<bool>,
44 pub category: Option<String>,
45 pub completed: Option<i64>,
46 pub completion_on: Option<u64>,
47 pub dl_limit: Option<i64>,
48 pub dlspeed: Option<i64>,
49 pub downloaded: Option<i64>,
50 pub downloaded_session: Option<i64>,
51 pub eta: Option<i64>,
52 pub f_l_piece_prio: Option<bool>,
53 pub force_start: Option<bool>,
54 pub last_activity: Option<u64>,
56 pub magnet_uri: Option<String>,
57 pub max_ratio: Option<f64>,
58 pub max_seeding_time: Option<i64>,
59 pub name: Option<String>,
60 pub num_complete: Option<i64>,
61 pub num_incomplete: Option<i64>,
62 pub num_leechs: Option<i64>,
63 pub num_seeds: Option<i64>,
64 pub priority: Option<i64>,
65 pub progress: Option<f64>,
66 pub ratio: Option<f64>,
67 pub ratio_limit: Option<f64>,
68 pub save_path: Option<String>,
69 pub seeding_time_limit: Option<i64>,
70 pub seen_complete: Option<i64>,
71 pub seq_dl: Option<bool>,
72 pub size: Option<i64>,
73 pub state: Option<InfoState>,
74 pub super_seeding: Option<bool>,
75 pub tags: Option<String>,
76 pub time_active: Option<i64>,
77 pub total_size: Option<i64>,
78 pub tracker: Option<String>,
79 pub up_limit: Option<i64>,
80 pub uploaded: Option<i64>,
81 pub uploaded_session: Option<i64>,
82 pub upspeed: Option<i64>,
83}
84
85#[derive(Debug, Clone, Deserialize)]
88pub struct ServerState {
89 pub alltime_dl: Option<u64>,
90 pub alltime_ul: Option<u64>,
91 pub average_time_queue: Option<u64>,
92 pub free_space_on_disk: Option<u64>,
93 pub global_ratio: Option<String>,
94 pub queued_io_jobs: Option<u64>,
95 pub queueing: Option<bool>,
96 pub read_cache_hits: Option<String>,
97 pub read_cache_overload: Option<String>,
98 pub refresh_interval: Option<u64>,
99 pub total_buffers_size: Option<u64>,
100 pub total_peer_connections: Option<u64>,
101 pub total_queued_size: Option<u64>,
102 pub total_wasted_session: Option<u64>,
103 pub use_alt_speed_limits: Option<bool>,
104 pub write_cache_overload: Option<String>,
105
106 pub dl_info_speed: Option<u64>,
107 pub dl_info_data: Option<u64>,
108 pub up_info_speed: Option<u64>,
109 pub up_info_data: Option<u64>,
110 pub dl_rate_limit: Option<u64>,
111 pub up_rate_limit: Option<u64>,
112 pub dht_nodes: Option<u64>,
113 pub connection_status: Option<ConnectionStatus>,
114}
115
116#[derive(Debug, Clone, Default, Serialize)]
118pub struct TorrentPeersQuery {
119 pub hash: String,
120 pub rid: u64,
121}
122
123#[derive(Debug, Clone, Default, PartialEq, Deserialize)]
127pub struct TorrentPeersResponse {
128 pub full_update: bool,
129 pub peers: HashMap<String, TorrentPeer>,
130}
131
132#[derive(Debug, Clone, PartialEq, Deserialize)]
135pub struct TorrentPeer {
136 pub client: String,
137 pub connection: String,
138 pub country: String,
139 pub country_code: String,
140 pub dl_speed: u64,
141 pub downloaded: u64,
142 pub files: String,
143 pub flags: String,
144 pub flags_desc: String,
145 pub ip: String,
146 pub peer_id_client: String,
147 pub port: u16,
148 pub progress: f64,
149 pub relevance: f64,
150 pub up_speed: u64,
151 pub uploaded: u64,
152}