From c41a74411e155dc4e6caaec574786890470ef986 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Tue, 23 Jun 2020 00:43:05 +0200 Subject: Ideas for API I want a wrapper for `fastcgi::run()` that uses `http::Request` and `http::Response`. Add a `lighttpd.conf` to test the FastCGI. Print FastCGI params to give me an idea of what the request looks like. --- src/lib.rs | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 31e1bb2..9b87edf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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(handler: F) +where F: Fn(Request<()>) -> Response + 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::>() + .join("\n"); + + write!( + &mut req.stdout(), + "Content-Type: text/plain\n\n{}", + params + ) + .unwrap_or(()); + }); } -- cgit v1.2.3