use amiya::m;
#[derive(Default)]
struct ExData {
header_ext_message: Option<String>,
}
fn main() {
let app = amiya::with_ex()
.uses(m!(ctx: ExData => {
println!(
"Request {} from {}",
ctx.req.url(),
ctx.req.remote().unwrap_or("unknown address")
);
ctx.ex.header_ext_message.replace(String::from("Amiya Middleware ExData Test"));
let result = ctx.next().await;
if let Err(ref err) = result {
eprintln!("Request process error: {}", err);
}
result
}))
.uses(m!(ctx: ExData => {
ctx.next().await?;
ctx.resp.set_body("Hello from Amiya!");
if let Some(message) = ctx.ex.header_ext_message.take() {
ctx.resp.insert_header("X-Amiya-Ext", message);
}
Ok(())
}));
app.listen("[::]:8080").unwrap();
std::thread::park();
}