use ratpack::prelude::*;
#[cfg(feature = "unix")]
use std::path::PathBuf;
async fn hello(
req: Request
,
_resp: Option>,
params: Params,
_app: App<(), NoState>,
_state: NoState,
) -> HTTPResult {
let name = params.get("name").unwrap();
let bytes = Body::from(format!("hello, {}!\n", name));
return Ok((
req,
Some(Response::builder().status(200).body(bytes).unwrap()),
NoState {},
));
}
#[tokio::main]
async fn main() -> Result<(), ServerError> {
let mut app = App::new();
app.get("/:name", compose_handler!(hello));
#[cfg(feature = "unix")]
{
std::fs::remove_file("/tmp/server.sock").unwrap_or_default();
eprintln!("Serving over /tmp/server.sock");
app.serve_unix(PathBuf::from("/tmp/server.sock")).await?;
}
#[cfg(not(feature = "unix"))]
{
eprintln!("Serving over 127.0.0.1:3000");
app.serve("127.0.0.1:3000").await?;
}
Ok(())
}