aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/github.rs26
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();