use afire::{
middleware::{MiddleResult, Middleware},
Content, Header, Method, Request, Response, Server,
};
use crate::Example;
struct Log;
impl Middleware for Log {
fn pre(&self, req: &mut Request) -> MiddleResult {
println!("[{}] {} {}", req.address.ip(), req.method, req.path);
MiddleResult::Continue
}
fn post(&self, _req: &Request, res: &mut Response) -> MiddleResult {
res.headers.push(Header::new("X-Example", "Middleware"));
MiddleResult::Continue
}
}
pub struct MiddlewareExample;
impl Example for MiddlewareExample {
fn name(&self) -> &'static str {
"middleware"
}
fn exec(&self) {
let mut server = Server::<()>::new("localhost", 8080);
server.route(Method::GET, "/", |_req| {
Response::new().text("Hello World!").content(Content::TXT)
});
Log.attach(&mut server);
server.start().unwrap();
}
}