diff --git a/Cargo.toml b/Cargo.toml index 92272fa..afcbeed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,3 +10,7 @@ hyper = { version = "*", features = [ "http1", "http2", "server", "runtime", "tc http = "*" async-recursion = "*" tokio = { version = "*", features = [ "full" ] } + +[dev-dependencies] +log = "*" +env_logger = "*" diff --git a/examples/log.rs b/examples/log.rs new file mode 100644 index 0000000..a77c307 --- /dev/null +++ b/examples/log.rs @@ -0,0 +1,34 @@ +use http::{Request, Response, StatusCode}; +use hyper::Body; +use log::LevelFilter; +use ratpack::{app::App, compose_handler, handler::Params, Error, HTTPResult, ServerError}; + +async fn log(req: Request, resp: Option>, _params: Params) -> HTTPResult { + log::trace!("New request: {}", req.uri().path()); + Ok((req, resp)) +} + +async fn hello(req: Request, _resp: Option>, params: Params) -> HTTPResult { + let name = params.get("name").unwrap(); + log::info!("Saying hello to {}", name); + let bytes = Body::from(format!("hello, {}!\n", name)); + + return Ok(( + req, + Some(Response::builder().status(200).body(bytes).unwrap()), + )); +} + +#[tokio::main] +async fn main() -> Result<(), ServerError> { + let mut app = App::new(); + env_logger::builder() + .target(env_logger::Target::Stderr) + .filter(None, LevelFilter::Trace) + .init(); + app.get("/:name", compose_handler!(log, hello)); + + app.serve("127.0.0.1:3000").await?; + + Ok(()) +}