use crate::prelude::*;
use qbittorrent_api::add_torrent::AddTorrentOptions;
#[derive(Options, Clone, Debug, Deserialize, Serialize)]
pub struct QbitUploadOptions {
#[arg(long)]
pub inject_torrent: bool,
#[arg(long)]
pub qbit_inject_savepath: Option<String>,
#[arg(long)]
pub qbit_inject_category: Option<String>,
#[arg(long)]
pub qbit_inject_tags: Option<Vec<String>>,
#[arg(long)]
pub qbit_inject_paused: Option<bool>,
#[arg(long)]
pub qbit_inject_skip_checking: Option<bool>,
}
impl QbitUploadOptions {
#[must_use]
pub fn to_add_torrent_options(&self) -> AddTorrentOptions {
AddTorrentOptions {
save_path: self.qbit_inject_savepath.clone(),
category: self.qbit_inject_category.clone(),
tags: self.qbit_inject_tags.clone(),
paused: self.qbit_inject_paused,
skip_checking: self.qbit_inject_skip_checking,
..AddTorrentOptions::default()
}
}
#[cfg(test)]
#[must_use]
pub fn mock() -> Self {
Self {
inject_torrent: true,
qbit_inject_savepath: None,
qbit_inject_category: Some(APP_NAME.to_owned()),
qbit_inject_tags: Some(vec![APP_NAME.to_owned()]),
qbit_inject_paused: None,
qbit_inject_skip_checking: None,
}
}
}
impl OptionsContract for QbitUploadOptions {
type Partial = QbitUploadOptionsPartial;
fn validate(&self, _validator: &mut OptionsValidator) {}
}