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(()); +    });  } | 
