extern crate transmission_rpc; use std::env; use dotenv::dotenv; use transmission_rpc::TransClient; use transmission_rpc::types::{Result, RpcResponse, BasicAuth}; use transmission_rpc::types::{Torrents, Torrent, TorrentGetField, Id}; #[tokio::main] async fn main() -> Result<()> { dotenv().ok(); env_logger::init(); let url= env::var("TURL")?; let basic_auth = BasicAuth{user: env::var("TUSER")?, password: env::var("TPWD")?}; let client = TransClient::with_auth(&url, basic_auth); let res: RpcResponse> = client.torrent_get(None, None).await?; let names: Vec<&String> = res.arguments.torrents.iter().map(|it| it.name.as_ref().unwrap()).collect(); println!("{:#?}", names); let res1: RpcResponse> = client.torrent_get(Some(vec![TorrentGetField::Id, TorrentGetField::Name]), Some(vec![Id::Id(1), Id::Id(2), Id::Id(3)])).await?; let first_three: Vec = res1.arguments.torrents.iter().map(|it| format!("{}. {}",&it.id.as_ref().unwrap(), &it.name.as_ref().unwrap()) ).collect(); println!("{:#?}", first_three); let res2: RpcResponse> = client.torrent_get(Some(vec![TorrentGetField::Id, TorrentGetField::HashString, TorrentGetField::Name]), Some(vec![Id::Hash(String::from("64b0d9a53ac9cd1002dad1e15522feddb00152fe"))])).await?; let info: Vec = res2.arguments.torrents.iter().map(|it| format!("{:5}. {:^45} {}", &it.id.as_ref().unwrap(), &it.hash_string.as_ref().unwrap(), &it.name.as_ref().unwrap()) ).collect(); println!("{:#?}", info); Ok(()) }