From b7bffe7678ee76fe011288124736f83a8265f3e5 Mon Sep 17 00:00:00 2001 From: Sosthene Date: Mon, 2 Sep 2024 14:45:35 +0200 Subject: [PATCH] Add more error control --- src/api.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/api.rs b/src/api.rs index 3718dd2..221156d 100644 --- a/src/api.rs +++ b/src/api.rs @@ -571,10 +571,11 @@ pub fn create_process_init_transaction( fee_rate: u32, ) -> ApiResult { let pcd = new_process.init_state; - let roles = pcd["roles"].as_object().unwrap().clone(); + let roles = pcd.get("roles").ok_or(ApiError { message: "No roles in init_state".to_owned()})?; + let roles_map = roles.as_object().ok_or(ApiError { message: "roles is not an object".to_owned()})?.clone(); let mut all_members: HashMap> = HashMap::new(); - for (name, role_def) in roles { - let role: RoleDefinition = serde_json::from_str(&role_def.to_string()).unwrap(); + for (name, role_def) in roles_map { + let role: RoleDefinition = serde_json::from_str(&role_def.to_string())?; let fields: Vec = role.validation_rules.iter().flat_map(|rule| rule.fields.clone()).collect(); for member in role.members { if !all_members.contains_key(&member) { @@ -615,7 +616,7 @@ pub fn create_process_init_transaction( let sp_wallet = local_device.get_wallet(); - let sender: Member = local_device.to_member().unwrap(); + let sender: Member = local_device.to_member().ok_or(ApiError { message: "unpaired device".to_owned() })?; // We first generate the prd with all the keys that we will keep to ourselves let full_prd = Prd::new( @@ -665,7 +666,7 @@ pub fn create_process_init_transaction( let addresses = member.get_addresses(); for sp_address in addresses.into_iter() { let shared_point = sp_utils::sending::calculate_ecdh_shared_secret( - &::try_from(sp_address).unwrap().get_scan_key(), + &::try_from(sp_address)?.get_scan_key(), &partial_secret, );