diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 39 |
1 files changed, 33 insertions, 6 deletions
@@ -1,7 +1,34 @@ -#[cfg(test)] -mod tests { - #[test] - fn it_works() { - assert_eq!(2 + 2, 4); - } +extern crate fastcgi; +extern crate http; + +use std::io::Write; + +use http::{Request, Response}; +use http::request; + + +pub fn run<F, T>(handler: F) +where F: Fn(Request<()>) -> Response<T> + Send + Sync + 'static +{ + fastcgi::run(move |mut req| { + // build request + let r = request::Builder::new() + .method("GET") + .body(()) + .unwrap(); + + handler(r); + + let params = req.params() + .map(|(k, v)| k + ": " + &v) + .collect::<Vec<String>>() + .join("\n"); + + write!( + &mut req.stdout(), + "Content-Type: text/plain\n\n{}", + params + ) + .unwrap_or(()); + }); } |