qbit_api_rs/types/
transfer.rs

1use serde::{self, Deserialize, Serialize};
2use serde_repr::*;
3use super::string_saperated_with_vertical_bar;
4
5/// # `/api/v2/transfer/info`
6#[derive(Debug, Clone, Deserialize)]
7pub struct InfoResponse {
8    pub dl_info_speed: u64,
9    pub dl_info_data: u64,
10    pub up_info_speed: u64,
11    pub up_info_data: u64,
12    pub dl_rate_limit: u64,
13    pub up_rate_limit: u64,
14    pub dht_nodes: u64,
15    pub connection_status: ConnectionStatus,
16}
17
18/// # `/api/v2/transfer/info`
19///
20/// [`crate::types::sync::ServerState::connection_status`]
21///
22/// [`InfoResponse::connection_status`]
23#[derive(Debug, Clone, Deserialize)]
24pub enum ConnectionStatus {
25    #[serde(rename = "connected")]
26    Connected,
27    #[serde(rename = "firewalled")]
28    Firewalled,
29    #[serde(rename = "disconnected")]
30    Disconnected,
31}
32
33/// # `/api/v2/transfer/speedLimitsMode`
34#[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug, Clone)]
35#[repr(u8)]
36pub enum SpeedLimitsModeResponse {
37    Normal = 0,
38    Alternative = 1,
39}
40
41/// # `/api/v2/transfer/setDownloadLimit`
42#[derive(Debug, Clone, Default, Serialize)]
43pub struct SetDownloadLimitForm {
44    pub limit: u64,
45}
46
47/// # `/api/v2/transfer/setUploadLimit`
48#[derive(Debug, Clone, Default, Serialize)]
49pub struct SetUploadLimitForm {
50    pub limit: u64,
51}
52
53/// # `/api/v2/transfer/banPeers`
54///
55/// `peers` format `Vec<host:port>`
56#[derive(Debug, Clone, Default, Serialize)]
57pub struct BanPeersForm {
58    #[serde(serialize_with = "string_saperated_with_vertical_bar::serialize")]
59    pub peers: Vec<String>,
60}