diff --git a/post-rs/src/main.rs b/post-rs/src/main.rs index eed8ee9..d9dff75 100644 --- a/post-rs/src/main.rs +++ b/post-rs/src/main.rs @@ -16,7 +16,8 @@ use std::path::PathBuf; use base64::Engine; use clap::{arg, Parser}; -use rust_util::{debugging, failure_and_exit, information, success, warning, util_size}; +use rust_util::{debugging, failure_and_exit, information, success, util_size, warning}; +use serde_json::Value; #[derive(Parser, Debug)] #[command(author, version, about, long_about = None, bin_name = "post.rs")] @@ -109,7 +110,26 @@ fn main() { Err(e) => failure_and_exit!("Post file: {} failed: {}",file_name, e), Ok(response) => match response.text() { Err(e) => failure_and_exit!("Post file: {} response failed: {}", file_name, e), - Ok(text) => success!("Post file: {} succeed: {}", file_name, text), + Ok(text) => { + success!("Post file: {} succeed: {}", file_name, &text); + let post_response: Value = serde_json::from_str(&text).unwrap(); + if let Some(post_response_data) = post_response.get("data") { + if let Some(Value::String(full_link)) = post_response_data.get("fullLink") { + let mut params = HashMap::new(); + params.insert("pretty", "true".to_string()); + params.insert("targetUrl", full_link.to_string()); + params.insert("aliveTimeMin", "10".to_string()); + let otl_result = client.post("https://hatter.ink/onetimelink/add.json") + .form(¶ms) + .send(); + if let Ok(response) = otl_result { + if let Ok(text) = response.text() { + success!("File one time link: {}", text); + } + } + } + } + } } } }