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