diff --git a/src/helper.rs b/src/helper.rs index 1f96322..ac5aace 100644 --- a/src/helper.rs +++ b/src/helper.rs @@ -11,7 +11,7 @@ use serde_json; use std::io; use std::fs; -use types::ApplicationSecret; +use types::{ConsoleApplicationSecret, ApplicationSecret}; pub fn read_application_secret(file: &String) -> io::Result { use std::io::Read; @@ -24,11 +24,21 @@ pub fn read_application_secret(file: &String) -> io::Result { } pub fn parse_application_secret(secret: &String) -> io::Result { - match serde_json::from_str(secret) { + let result: serde_json::Result = serde_json::from_str(secret); + match result { Err(e) => { Err(io::Error::new(io::ErrorKind::InvalidData, format!("Bad application secret: {}", e))) } - Ok(decoded) => Ok(decoded), + Ok(decoded) => { + if decoded.web.is_some() { + Ok(decoded.web.unwrap()) + } else if decoded.installed.is_some() { + Ok(decoded.installed.unwrap()) + } else { + Err(io::Error::new(io::ErrorKind::InvalidData, + "Unknown application secret format")) + } + } } }