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 | |
| parent | b66e4dcdc7322a6e96ddcd422414ac6c5708bdbf (diff) | |
| download | fastcgi-conduit-d0066b2e10c9c23650253b8a47db4da2ea9573f6.tar.bz2 | |
Move `Server` code into a `server.rs` module
| -rw-r--r-- | src/lib.rs | 45 | ||||
| -rw-r--r-- | src/server.rs | 45 | 
2 files changed, 47 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; diff --git a/src/server.rs b/src/server.rs new file mode 100644 index 0000000..dad6813 --- /dev/null +++ b/src/server.rs @@ -0,0 +1,45 @@ +use std::io; +use std::io::Write; + +use conduit::Handler; + +use crate::request::FastCgiRequest; + + +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 = 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{}) +    } +} | 
