1use flyer::{
2 request::Request,
3 response::{HTTP_UNAUTHORIZED, Response},
4 router::next::Next,
5 server
6};
7use serde::{Deserialize, Serialize};
8
9#[derive(Serialize, Deserialize)]
10pub struct User {
11 id: u64,
12 email: String
13}
14
15#[derive(Serialize, Deserialize)]
16pub struct JsonMessage {
17 message: String
18}
19
20pub async fn auth<'a>(req: &'a mut Request, res: &'a mut Response, next: &mut Next) -> &'a mut Response {
21 if req.header("authorization") != "ey.jwt.token" {
22 return res.status_code(HTTP_UNAUTHORIZED).json(&JsonMessage{
23 message: "Unauthorized Access".to_owned()
24 })
25 }
26
27 return next.handle(res);
28}
29
30pub async fn verified<'a>(_req: &'a mut Request, res: &'a mut Response, next: &mut Next) -> &'a mut Response {
31 return next.handle(res);
33}
34
35fn main() {
36 let server = server("127.0.0.1", 9999);
37
38 server.router().group("api", |router| {
39 router.group("users", |router| {
40 router.group("{user}", |router| {
41 router.get("/", async |req, res| {
42 return res.json(&User{
43 id: req.parameter("user").parse().unwrap(),
44 email: "joe@deo.com".to_owned()
45 });
46 }).middleware(verified);
47 });
48 });
49 }).middleware(auth);
50
51 print!("\r\n\r\nRunning server: {}\r\n\r\n", server.address());
52
53 server.listen();
54}