aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--license-generator/aquatic-prime/src/lib.rs38
1 files changed, 29 insertions, 9 deletions
diff --git a/license-generator/aquatic-prime/src/lib.rs b/license-generator/aquatic-prime/src/lib.rs
index 8c734fd..319d2dc 100644
--- a/license-generator/aquatic-prime/src/lib.rs
+++ b/license-generator/aquatic-prime/src/lib.rs
@@ -10,12 +10,24 @@ extern crate serde;
extern crate serde_derive;
mod errors {
+ use plist;
+
error_chain! {
+ foreign_links {
+ FromUtf8(::std::string::FromUtf8Error);
+
+ Plist(plist::Error);
+ }
+
errors {
PublicKeyIncorrectNumBits(bits: i32) {
description("public key has incorrect bit size")
display("public key has incorrect bit size: '{}'", bits)
}
+
+ InvalidLicenseData {
+ display("license data must be a dictionary")
+ }
}
}
}
@@ -91,18 +103,26 @@ impl<'a> AquaticPrime<'a> {
// Get input as `Plist`
let mut xml_for_plist = Vec::with_capacity(600);
- plist::serde::serialize_to_xml(&mut xml_for_plist, &input_data).unwrap();
+ plist::serde::serialize_to_xml(&mut xml_for_plist, &input_data)?;
let xml_for_hash_map = xml_for_plist.clone();
- let plist_data = Plist::read(Cursor::new(&xml_for_plist)).unwrap();
+ let plist_data = Plist::read(Cursor::new(&xml_for_plist))?;
- let mut plist_dict = plist_data.as_dictionary().unwrap().to_owned();
+ let mut plist_dict = plist_data
+ .as_dictionary()
+ .ok_or(ErrorKind::InvalidLicenseData)?
+ .to_owned();
// Get input as HashMap to send to `sign()`
- let data: HashMap<String, String> = plist::serde::deserialize(Cursor::new(&xml_for_hash_map)).unwrap();
-
- let signature = self.sign(data).unwrap();
- plist_dict.insert("Signature".to_owned(), Plist::Data(signature.into_bytes()));
+ let data: HashMap<String, String> = plist::serde::deserialize(
+ Cursor::new(&xml_for_hash_map)
+ )?;
+
+ let signature = self.sign(data)?;
+ plist_dict.insert(
+ "Signature".to_owned(),
+ Plist::Data(signature.into_bytes())
+ );
// Generate plist XML string
let mut plist_xml = Cursor::new(Vec::with_capacity(600));
@@ -111,11 +131,11 @@ impl<'a> AquaticPrime<'a> {
let mut writer = plist::xml::EventWriter::new(&mut plist_xml);
for item in Plist::Dictionary(plist_dict).into_events() {
- writer.write(&item).unwrap();
+ writer.write(&item)?;
}
}
- Ok(String::from_utf8(plist_xml.into_inner()).unwrap())
+ Ok(String::from_utf8(plist_xml.into_inner())?)
}
}