use std::env; extern crate jsonwebtoken as jwt; #[macro_use] extern crate serde_derive; extern crate serde_json; use jwt::errors::ErrorKind; use jwt::dangerous_unsafe_decode; #[derive(Debug, Serialize, Deserialize)] struct Claims { aud: String, exp: f64, iss: String, sub: String, scope: String, } fn main() { let mut tokens = env::args(); tokens.next(); for token in tokens { decode_token(&token); } } fn decode_token(token: &str) { let data = match dangerous_unsafe_decode::(&token) { Ok(c) => c, Err(err) => match *err.kind() { ErrorKind::InvalidToken => panic!("invalid token"), _ => { println!("{:?}", err); panic!(); }, }, }; let claims = data.claims; let j = serde_json::to_string_pretty(&claims).expect("JSON error"); println!("{}", j); }