diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..1689ee3 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,44 @@ +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::<Claims>(&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); +} |