summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs44
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);
+}