From 228c732e2e77d49bb06dccc5359bfd30ad7b4795 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Wed, 23 Dec 2015 22:38:14 -0500 Subject: [PATCH] Add JsonObjectHelper::get_string_option --- src/client/response.rs | 9 ++++++--- src/error.rs | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/client/response.rs b/src/client/response.rs index bca915c..09aafe2 100644 --- a/src/client/response.rs +++ b/src/client/response.rs @@ -73,10 +73,13 @@ impl<'a> JsonHelper<'a> { pub struct JsonObjectHelper<'a>(pub &'a json::Object); impl<'a> JsonObjectHelper<'a> { + /// Gets a field as a string or returns `None`. + pub fn get_string_option(&self, key: &'static str) -> Option<&'a str> { + self.0.get(key).and_then(Json::as_string) + } + /// Gets a field as a string or fails with `ParseError::ExpectedFieldType`. pub fn get_string(&self, key: &'static str) -> Result<&'a str, ParseError> { - self.0.get(key) - .and_then(Json::as_string) - .ok_or(ParseError::ExpectedFieldType(key, "string")) + self.get_string_option(key).ok_or(ParseError::ExpectedFieldType(key, "string")) } } diff --git a/src/error.rs b/src/error.rs index 40e0416..7f92cfe 100644 --- a/src/error.rs +++ b/src/error.rs @@ -92,8 +92,8 @@ impl FromResponse for OAuth2Error { let obj = try!(json.as_object()); let code = try!(obj.get_string("error")); - let description = obj.0.get("error_description").and_then(Json::as_string); - let uri = obj.0.get("error_uri").and_then(Json::as_string); + let description = obj.get_string_option("error_description"); + let uri = obj.get_string_option("error_uri"); Ok(OAuth2Error { code: code.into(),