diff options
author | Teddy Wing | 2020-06-29 00:25:51 +0200 |
---|---|---|
committer | Teddy Wing | 2020-06-29 00:25:51 +0200 |
commit | d0066b2e10c9c23650253b8a47db4da2ea9573f6 (patch) | |
tree | ed4b6e8d384829627bae524b8e85693fd517532e /src/lib.rs | |
parent | b66e4dcdc7322a6e96ddcd422414ac6c5708bdbf (diff) | |
download | fastcgi-conduit-d0066b2e10c9c23650253b8a47db4da2ea9573f6.tar.bz2 |
Move `Server` code into a `server.rs` module
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 45 |
1 files changed, 2 insertions, 43 deletions
@@ -3,47 +3,6 @@ extern crate fastcgi; extern crate http; mod request; +mod server; -use std::io; -use std::io::Write; - -use conduit::Handler; - - -pub struct Server; - -impl Server { - pub fn start<H: Handler + 'static + Sync>(handler: H) -> io::Result<Server> { - fastcgi::run(move |mut raw_request| { - let mut request = request::FastCgiRequest::new(&mut raw_request).unwrap(); - let response = handler.call(&mut request); - - let mut stdout = raw_request.stdout(); - - let (head, body) = response.unwrap().into_parts(); - - write!( - &mut stdout, - "HTTP/1.1 {} {}\r\n", - head.status.as_str(), - head.status.canonical_reason().unwrap_or("UNKNOWN"), - ); - - for (name, value) in head.headers.iter() { - write!(&mut stdout, "{}: ", name).unwrap(); - stdout.write(value.as_bytes()).unwrap(); - stdout.write(b"\r\n").unwrap(); - } - - stdout.write(b"\r\n").unwrap(); - - match body { - conduit::Body::Static(slice) => stdout.write(slice).map(|_| ()).unwrap(), - conduit::Body::Owned(vec) => stdout.write(&vec).map(|_| ()).unwrap(), - conduit::Body::File(mut file) => io::copy(&mut file, &mut stdout).map(|_| ()).unwrap(), - }; - }); - - Ok(Server{}) - } -} +pub use server::Server; |