diff --git a/src/args.rs b/src/args.rs new file mode 100644 index 0000000..6ec9cba --- /dev/null +++ b/src/args.rs @@ -0,0 +1,12 @@ +use clap::Parser; + +#[derive(Parser, Debug)] +pub struct Args { + pub app_id: String, + #[arg(short, long)] + pub from: String, + #[arg(short, long)] + pub to: String, + #[arg(short, long)] + pub value: String, +} diff --git a/src/main.rs b/src/main.rs index bac8b02..3c0e1d6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,32 +1,12 @@ use clap::Parser; use reqwest::Error; -use serde::{Deserialize, Serialize}; -#[derive(Parser, Debug)] -#[command(version, about, long_about = None)] - -pub struct Args { - #[arg(short, long)] - app_id: String, - #[arg(short, long)] - from: String, - #[arg(short, long)] - to: String, - #[arg(short, long)] - value: String, -} - -#[derive(Debug, Deserialize, Serialize)] -pub struct Payload { - base_code: String, - target_code: String, - conversion_rate: f64, - conversion_result: f64, -} +mod args; +mod payload; #[tokio::main] async fn main() -> Result<(), Error> { - let args = Args::parse(); + let args = args::Args::parse(); let url = format!( "https://v6.exchangerate-api.com/v6/{}/pair/{}/{}/{}", args.app_id, args.from, args.to, args.value @@ -37,7 +17,7 @@ async fn main() -> Result<(), Error> { match client.get(url).send().await { Ok(response) => { if response.status().is_success() { - match response.json::().await { + match response.json::().await { Ok(payload) => { println!("From: {:?}", payload.base_code); println!("To: {:?}", payload.target_code); diff --git a/src/payload.rs b/src/payload.rs new file mode 100644 index 0000000..f1c505a --- /dev/null +++ b/src/payload.rs @@ -0,0 +1,9 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Deserialize, Serialize)] +pub struct Payload { + pub base_code: String, + pub target_code: String, + pub conversion_rate: f64, + pub conversion_result: f64, +}