Skip to main content

08_middleware/
08_middleware.rs

1use flyer::{
2    request::Request,
3    response::{HTTP_UNAUTHORIZED, Response},
4    routing::next::Next, server
5};
6use serde::{Deserialize, Serialize};
7
8#[derive(Serialize, Deserialize)]
9pub struct JsonMessage {
10    message: String
11}
12
13pub async fn auth(req: Request, res: Response, next: Next) -> Response {
14    // Basic check for an authorization header
15    if req.header("authorization") != "my-secret-token" {
16        return res.status_code(HTTP_UNAUTHORIZED).json(&JsonMessage{
17            message: "Unauthorized Access".to_owned()
18        })
19    }
20    
21    // Continue processing the request
22    return next.handle(req, res);
23}
24
25fn main() {
26    let server = server("127.0.0.1", 9999);
27
28    server.router().group("api", |router| {
29        router.get("/", async |_req, res| {
30            return res.html("<h1>Authorized Access</h1>");
31        });
32    }).middleware(auth);
33
34    print!("\r\n\r\nRunning server: {}\r\n\r\n", server.address());
35
36    server.listen();
37}