diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/github.rs | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/github.rs b/src/github.rs index b297886..18fdd3c 100644 --- a/src/github.rs +++ b/src/github.rs @@ -1,4 +1,8 @@ extern crate mockito; +extern crate reqwest; + +use std::collections::HashMap; +use std::fmt; use pull_request::CommitRef; @@ -15,6 +19,17 @@ enum CommitStatus { Success, } +impl fmt::Display for CommitStatus { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match *self { + CommitStatus::Error => write!(f, "error"), + CommitStatus::Failure => write!(f, "failure"), + CommitStatus::Pending => write!(f, "pending"), + CommitStatus::Success => write!(f, "success"), + } + } +} + fn update_commit_status( commit_ref: CommitRef, state: CommitStatus, @@ -25,11 +40,14 @@ fn update_commit_status( let client = reqwest::Client::new(); let mut params = HashMap::new(); - params.insert("state", state); + params.insert("state", state.to_string()); params.insert("target_url", target_url); - params.insert("description", description); params.insert("context", context); + if let Some(d) = description { + params.insert("description", d); + } + let response = client.post( format!("{}/repos/{}/{}/statuses/{}", API_URL, commit_ref.repo, commit_ref.sha) ); @@ -57,9 +75,9 @@ mod tests { update_commit_status( commit_ref, CommitStatus::Success, - "https://jenkins.example.com/job/octocat/3", + "https://jenkins.example.com/job/octocat/3".to_string(), None, - "continuous-integration/jenkins" + "continuous-integration/jenkins".to_string() ); mock.assert(); |