diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 5 | ||||
-rw-r--r-- | src/main.rs | 25 |
2 files changed, 26 insertions, 4 deletions
@@ -1,4 +1,5 @@ -mod pull_request; +pub mod jenkins; +pub mod pull_request; + mod github; -mod jenkins; mod af83; diff --git a/src/main.rs b/src/main.rs index e9c50e4..e5f7235 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,12 +1,33 @@ #[macro_use] extern crate rouille; +extern crate kipper; + +use std::io::Read; + +use kipper::jenkins; +use kipper::pull_request::CommitRef; fn main() { rouille::start_server("localhost:8000", move |request| { router!(request, - (GET) (/) => { - rouille::Response::text("hello world") + (POST) (/github/pull_request_event) => { + let mut body = String::new(); + + match request.data() { + None => rouille::Response::text("400 Bad Request") + .with_status_code(400), + Some(mut data) => { + try_or_400!(data.read_to_string(&mut body)); + + let commit_ref = CommitRef::new(body.as_ref()); + + jenkins::find_and_track_build_and_update_status(commit_ref); + + rouille::Response::text("202 Accepted") + .with_status_code(202) + } + } }, _ => rouille::Response::text("404 Not Found") |