diff options
author | Teddy Wing | 2017-11-08 22:47:28 +0100 |
---|---|---|
committer | Teddy Wing | 2017-11-08 22:47:28 +0100 |
commit | 5d2fa12b69ae16d222f57bba7d427b5323a689e9 (patch) | |
tree | 2e12333ad13c54fa32f63994cdb6a4516966261c /src/jenkins.rs | |
parent | d93d73e1a3504a84cd4a017174a8665a739e8045 (diff) | |
download | kipper-5d2fa12b69ae16d222f57bba7d427b5323a689e9.tar.bz2 |
jenkins.rs: Initial `request_job` implementation
Try to request a job from the Jenkins API and return it as a `Job`.
Trouble is, we can't mock this because the 'mockito' mocker depends on
`API_URL`. Right now, we're making a request to the real server, not the
mock server.
Diffstat (limited to 'src/jenkins.rs')
-rw-r--r-- | src/jenkins.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/jenkins.rs b/src/jenkins.rs index 1879574..ff15428 100644 --- a/src/jenkins.rs +++ b/src/jenkins.rs @@ -101,6 +101,26 @@ pub fn get_jobs(repo_name: String) -> Vec<String> { .collect::<Vec<String>>() } +pub fn request_job(url: String) -> Job { + let client = reqwest::Client::new(); + + let credentials = auth_credentials(); + + let mut response = client.get(&format!("{}/api/json", url)) + .header(Authorization(credentials)) + .send() + .unwrap(); + + let body = response.text().unwrap(); + + let mut job = json::parse(body.as_ref()).unwrap(); + + Job { + display_name: job["displayName"].take_string().unwrap(), + result: result_from_job(job["result"].take_string()), + } +} + // Does the `commit_ref` correspond to the job? pub fn job_for_commit(job: Job, commit_ref: CommitRef) -> bool { job.display_name == af83::job_name(commit_ref) |