diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/pull_request.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/pull_request.rs b/src/pull_request.rs index fc886c7..df4cd2a 100644 --- a/src/pull_request.rs +++ b/src/pull_request.rs @@ -1,5 +1,6 @@ extern crate json; +use std::error::Error; #[derive(Debug)] pub struct CommitRef { @@ -10,15 +11,17 @@ pub struct CommitRef { } impl CommitRef { - pub fn new(json_str: &str) -> CommitRef { - let mut github_push_event = json::parse(json_str).unwrap(); + pub fn new(json_str: &str) -> Result<CommitRef, Box<Error>> { + let mut github_push_event = json::parse(json_str)?; - CommitRef { - owner: github_push_event["pull_request"]["head"]["repo"]["owner"]["login"].take_string().unwrap(), - repo: github_push_event["pull_request"]["head"]["repo"]["name"].take_string().unwrap(), - sha: github_push_event["pull_request"]["head"]["sha"].take_string().unwrap(), - branch: github_push_event["pull_request"]["head"]["ref"].take_string().unwrap(), - } + Ok( + CommitRef { + owner: github_push_event["pull_request"]["head"]["repo"]["owner"]["login"].take_string().unwrap_or_default(), + repo: github_push_event["pull_request"]["head"]["repo"]["name"].take_string().unwrap_or_default(), + sha: github_push_event["pull_request"]["head"]["sha"].take_string().unwrap_or_default(), + branch: github_push_event["pull_request"]["head"]["ref"].take_string().unwrap_or_default(), + } + ) } } |