From 41f6535a480bb9b0ff085e0144852827633f2305 Mon Sep 17 00:00:00 2001 From: Andy Wortman Date: Wed, 1 Nov 2017 04:31:43 -0700 Subject: move more logging to be through DisplayInfo statuses move DisplayInfo into ... display flush output, duh --- src/tw/user.rs | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) (limited to 'src/tw/user.rs') diff --git a/src/tw/user.rs b/src/tw/user.rs index 8f41b6d..0af4eb8 100644 --- a/src/tw/user.rs +++ b/src/tw/user.rs @@ -18,29 +18,28 @@ impl Default for User { } impl User { - pub fn from_json(json: serde_json::Value) -> Option { + pub fn from_json(json: serde_json::Value) -> Result { if let serde_json::Value::Object(json_map) = json { - if json_map.contains_key("id_str") && - json_map.contains_key("name") && - json_map.contains_key("screen_name") { - if let ( - Some(id_str), - Some(name), - Some(screen_name) - ) = ( - json_map["id_str"].as_str(), - json_map["name"].as_str(), - json_map["screen_name"].as_str() - ) { - return Some(User { - id: id_str.to_owned(), - name: name.to_owned(), - handle: screen_name.to_owned() - }) - } + if let ( + Some(id_str), + Some(name), + Some(screen_name) + ) = ( + json_map.get("id_str").and_then(|x| x.as_str()), + json_map.get("name").and_then(|x| x.as_str()), + json_map.get("screen_name").and_then(|x| x.as_str()) + ) { + Ok(User { + id: id_str.to_owned(), + name: name.to_owned(), + handle: screen_name.to_owned() + }) + } else { + Err("user json missing one of id_str, name, screen_name".to_owned()) } + } else { + Err(format!("Invalid json: {:?}", json)) } - None } } -- cgit v1.1