Files
scriptbase/myip-rs/src/main.rs
2023-02-23 00:30:59 +08:00

33 lines
933 B
Rust
Executable File

#!/usr/bin/env runrs
//! ```cargo
//! [dependencies]
//! serde = { version = "1.0", features = ["derive"] }
//! serde_json = "1.0"
//! reqwest = { version = "0.11", features = ["blocking", "json"] }
//! rust_util = { version = "0.6" }
//! ```
use rust_util::{failure_and_exit, success};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct IpResponse {
status: u16,
message: String,
ip: String,
#[serde(rename = "userAgent")]
user_agent: Option<String>,
}
const GET_IP_URL: &'static str = "https://hatter.ink/ip/ip.jsonp";
fn main() {
let ip_response: IpResponse = reqwest::blocking::get(GET_IP_URL).unwrap_or_else(|e| {
failure_and_exit!("Send request to: {} failed: {}", GET_IP_URL, e);
}).json().unwrap_or_else(|e| {
failure_and_exit!("Parse response from: {}, failed: {}", GET_IP_URL, e);
});
success!("Your IP address is: {}", ip_response.ip);
}