Merge pull request #22 from Yneluki/main

This commit is contained in:
Aleksandr 2021-08-04 09:11:41 +02:00 committed by GitHub
commit 3967562a87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 10 deletions

View File

@ -10,7 +10,6 @@ pub struct BasicAuth {
} }
pub use self::request::ArgumentFields; pub use self::request::ArgumentFields;
pub use self::request::File;
pub use self::request::Id; pub use self::request::Id;
pub(crate) use self::request::RpcRequest; pub(crate) use self::request::RpcRequest;
pub use self::request::TorrentAction; pub use self::request::TorrentAction;

View File

@ -146,16 +146,22 @@ pub struct TorrentAddArgs {
pub peer_limit: Option<i64>, pub peer_limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", rename = "bandwidthPriority")] #[serde(skip_serializing_if = "Option::is_none", rename = "bandwidthPriority")]
pub bandwidth_priority: Option<i64>, pub bandwidth_priority: Option<i64>,
/// list of indices of files to be downloaded
/// to ignore some files, put their indices in files_unwanted, otherwise they will still be downloaded
#[serde(skip_serializing_if = "Option::is_none", rename = "files-wanted")] #[serde(skip_serializing_if = "Option::is_none", rename = "files-wanted")]
pub files_wanted: Option<Vec<File>>, pub files_wanted: Option<Vec<i32>>,
/// list of indices of files not to download
#[serde(skip_serializing_if = "Option::is_none", rename = "files-unwanted")] #[serde(skip_serializing_if = "Option::is_none", rename = "files-unwanted")]
pub files_unwanted: Option<Vec<File>>, pub files_unwanted: Option<Vec<i32>>,
/// list of indices of files to be downloaded with high priority
#[serde(skip_serializing_if = "Option::is_none", rename = "priority-high")] #[serde(skip_serializing_if = "Option::is_none", rename = "priority-high")]
pub priority_high: Option<Vec<File>>, pub priority_high: Option<Vec<i32>>,
/// list of indices of files to be downloaded with low priority
#[serde(skip_serializing_if = "Option::is_none", rename = "priority-low")] #[serde(skip_serializing_if = "Option::is_none", rename = "priority-low")]
pub priority_low: Option<Vec<File>>, pub priority_low: Option<Vec<i32>>,
/// list of indices of files to be downloaded with normal priority
#[serde(skip_serializing_if = "Option::is_none", rename = "priority-normal")] #[serde(skip_serializing_if = "Option::is_none", rename = "priority-normal")]
pub priority_normal: Option<Vec<File>>, pub priority_normal: Option<Vec<i32>>,
} }
impl Default for TorrentAddArgs { impl Default for TorrentAddArgs {
@ -177,10 +183,6 @@ impl Default for TorrentAddArgs {
} }
} }
#[derive(Serialize, Debug, RustcEncodable, Clone)]
pub struct File {
//todo
}
#[derive(Clone, IntoEnumIterator)] #[derive(Clone, IntoEnumIterator)]
pub enum TorrentGetField { pub enum TorrentGetField {
Id, Id,
@ -208,10 +210,14 @@ pub enum TorrentGetField {
Sizewhendone, Sizewhendone,
Status, Status,
Trackers, Trackers,
Files,
Downloaddir, Downloaddir,
Uploadedever, Uploadedever,
Uploadratio, Uploadratio,
Webseedssendingtous, Webseedssendingtous,
Wanted,
Priorities,
Filestats
} }
impl TorrentGetField { impl TorrentGetField {
@ -248,10 +254,14 @@ impl TorrentGetField {
TorrentGetField::Sizewhendone => "sizeWhenDone", TorrentGetField::Sizewhendone => "sizeWhenDone",
TorrentGetField::Status => "status", TorrentGetField::Status => "status",
TorrentGetField::Trackers => "trackers", TorrentGetField::Trackers => "trackers",
TorrentGetField::Files => "files",
TorrentGetField::Downloaddir => "downloadDir", TorrentGetField::Downloaddir => "downloadDir",
TorrentGetField::Uploadedever => "uploadedEver", TorrentGetField::Uploadedever => "uploadedEver",
TorrentGetField::Uploadratio => "uploadRatio", TorrentGetField::Uploadratio => "uploadRatio",
TorrentGetField::Webseedssendingtous => "webseedsSendingToUs", TorrentGetField::Webseedssendingtous => "webseedsSendingToUs",
TorrentGetField::Wanted => "wanted",
TorrentGetField::Priorities => "priorities",
TorrentGetField::Filestats => "fileStats",
}.to_string() }.to_string()
} }
} }

View File

@ -75,6 +75,13 @@ pub struct Torrent {
pub upload_ratio: Option<f32>, pub upload_ratio: Option<f32>,
#[serde(rename = "uploadedEver")] #[serde(rename = "uploadedEver")]
pub uploaded_ever: Option<i64>, pub uploaded_ever: Option<i64>,
pub files: Option<Vec<File>>,
/// for each file in files, whether or not they will be downloaded (0 or 1)
pub wanted: Option<Vec<i8>>,
/// for each file in files, their download priority (low:-1,normal:0,high:1)
pub priorities: Option<Vec<i8>>,
#[serde(rename = "fileStats")]
pub file_stats: Option<Vec<FileStat>>,
} }
#[derive(Deserialize, Debug, RustcEncodable)] #[derive(Deserialize, Debug, RustcEncodable)]
@ -89,6 +96,23 @@ pub struct Trackers {
pub announce: String, pub announce: String,
} }
#[derive(Deserialize, Debug, RustcEncodable, Clone)]
pub struct File {
pub length: i64,
#[serde(rename = "bytesCompleted")]
pub bytes_completed: i64,
pub name: String,
}
#[derive(Deserialize, Debug, RustcEncodable, Clone)]
pub struct FileStat {
#[serde(rename = "bytesCompleted")]
pub bytes_completed: i64,
pub wanted: bool,
/// low: -1, normal: 0, high: 1
pub priority: i8,
}
#[derive(Deserialize, Debug, RustcEncodable)] #[derive(Deserialize, Debug, RustcEncodable)]
pub struct Nothing {} pub struct Nothing {}
impl RpcResponseArgument for Nothing {} impl RpcResponseArgument for Nothing {}