From a613320c5f69089feba14ef36de58bdc21dd7e0b Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 28 Jun 2020 18:22:18 +0200 Subject: Server: Working `start()` implementation Got a draft version of the server working. Change the example to use the new Conduit server. Got a working HTML fragment response. Need to handle `conduit::Body::File` as well as unwrapped errors. --- examples/server.rs | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'examples/server.rs') diff --git a/examples/server.rs b/examples/server.rs index 7460f56..864c105 100644 --- a/examples/server.rs +++ b/examples/server.rs @@ -1,27 +1,26 @@ +extern crate conduit; extern crate http; +extern crate fastcgi_conduit; use std::fs::OpenOptions; use std::io::prelude::*; +use std::io; -use http::{Response, StatusCode}; +use conduit::{Body, RequestExt, Response}; +use conduit::header; -use fcgi; +use fastcgi_conduit::Server; fn main() { - fcgi::run(move |req| { - let mut file = OpenOptions::new() - .write(true) - .append(true) - .open("/tmp/fcgi-log.txt") - .unwrap(); - write!(file, "ยป {:?}\n", req).unwrap(); - - let resp = Response::builder() - .status(StatusCode::OK) - .body(()) - .unwrap(); + Server::start(handler); +} - return resp; - }); +fn handler(req: &mut dyn RequestExt) -> io::Result> { + Ok( + Response::builder() + .header(header::CONTENT_TYPE, "text/html") + .body(Body::from_static(b"

Test

")) + .unwrap() + ) } -- cgit v1.2.3 From 8ac4bfa0c941acefedf0d384685e8b422fc4b426 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 28 Jun 2020 19:54:01 +0200 Subject: Server::start(): Write HTTP version and status code --- examples/server.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'examples/server.rs') diff --git a/examples/server.rs b/examples/server.rs index 864c105..464e564 100644 --- a/examples/server.rs +++ b/examples/server.rs @@ -19,6 +19,7 @@ fn main() { fn handler(req: &mut dyn RequestExt) -> io::Result> { Ok( Response::builder() + .status(202) .header(header::CONTENT_TYPE, "text/html") .body(Body::from_static(b"

Test

")) .unwrap() -- cgit v1.2.3 From c2f9adfe96406323e715513444a9d70fc7c4c17d Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 28 Jun 2020 23:48:54 +0200 Subject: examples/server: Try using a `conduit_router::RouteBuilder` Try making a server with more than one route. --- examples/server.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'examples/server.rs') diff --git a/examples/server.rs b/examples/server.rs index 464e564..6d9c3bb 100644 --- a/examples/server.rs +++ b/examples/server.rs @@ -1,4 +1,5 @@ extern crate conduit; +extern crate conduit_router; extern crate http; extern crate fastcgi_conduit; @@ -6,14 +7,20 @@ use std::fs::OpenOptions; use std::io::prelude::*; use std::io; -use conduit::{Body, RequestExt, Response}; +use conduit::{Body, HttpResult, RequestExt, Response}; use conduit::header; +use conduit_router::{RequestParams, RouteBuilder}; use fastcgi_conduit::Server; fn main() { - Server::start(handler); + let mut router = RouteBuilder::new(); + + router.get("/", handler); + router.get("/:var", var_handler); + + Server::start(router); } fn handler(req: &mut dyn RequestExt) -> io::Result> { @@ -25,3 +32,10 @@ fn handler(req: &mut dyn RequestExt) -> io::Result> { .unwrap() ) } + +fn var_handler(req: &mut dyn RequestExt) -> HttpResult { + let var = req.params().find("var").unwrap(); + let text = format!("The value is: {}", var).into_bytes(); + + Response::builder().body(Body::from_vec(text)) +} -- cgit v1.2.3