diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 4239cc9..3765b54 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -115,35 +115,39 @@ impl NumberParser { let pars = self.remove_some_data(&phone_number).await; - // println!("Parsed: {pars:?}"); - - let updated_parsed = self.add_prefix(&pars); - let contact = textsender_models::contact::Contact { - phone_number: updated_parsed, - ..Default::default() + match self.add_prefix(&pars) { + Ok(updated_parsed) => { + let contact = textsender_models::contact::Contact { + phone_number: updated_parsed, + ..Default::default() + }; + updated.push(contact); + } + Err(err) => { + eprintln!("Error: {err:?}"); + std::process::exit(-2); + } }; - updated.push(contact); } updated } - fn add_prefix(&self, raw: &String) -> String { - let mut parsed: String = String::new(); - let first_char = raw.chars().nth(0).unwrap(); - let second_char = raw.chars().nth(1).unwrap(); + fn add_prefix(&self, raw: &String) -> Result { + if raw.is_empty() { + Err(std::io::Error::other("Empty")) + } else { + let mut parsed: String = String::new(); + let first_char = raw.chars().nth(0).unwrap(); - if first_char == '1' { - parsed = format!("+{raw}"); - } else if first_char != '+' { - if second_char != '1' { - parsed = format!("+1{raw}"); - } else { + if first_char == '1' { + parsed = format!("+{raw}"); + } else if first_char != '+' { parsed = format!("+1{raw}"); } - } - parsed + Ok(parsed) + } } async fn remove_some_data(&self, unparsed: &String) -> String {