aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
authorTeddy Wing2020-06-23 00:43:05 +0200
committerTeddy Wing2020-06-23 00:43:05 +0200
commitc41a74411e155dc4e6caaec574786890470ef986 (patch)
treea925c21a910b5b40f7bf8fc0d59b14e6dbf3df44 /src/lib.rs
parent1f379b4cfa7c05f8f3429ddd666b1b9054020937 (diff)
downloadfastcgi-conduit-c41a74411e155dc4e6caaec574786890470ef986.tar.bz2
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.
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs39
1 files changed, 33 insertions, 6 deletions
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<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(());
+ });
}