Skip to main content

view/
view.rs

1use flyer::{server, view::{ViewData, view_render}};
2use serde::Serialize;
3
4/*
5
6TODO: Create file called index.html in views folder and paste html content below
7
8```html
9<!DOCTYPE html>
10<html lang="en">
11<head>
12    <meta charset="UTF-8">
13    <meta name="viewport" content="width=device-width, initial-scale=1.0">
14    <title>Hello {{ user.first_name }}</title>
15</head>
16<body>
17    <h1>Hi, {{ user.first_name }} {{ user.last_name }} how are you?</h1>
18</body>
19</html>
20```
21
22*/
23
24/*
25
26TODO: Create file called render.html in views folder and paste html content below
27
28```html
29<!DOCTYPE html>
30<html lang="en">
31<head>
32    <meta charset="UTF-8">
33    <meta name="viewport" content="width=device-width, initial-scale=1.0">
34    <title>This view is render using render_view</title>
35</head>
36<body>
37    <h1>Hello, {{ user.first_name }} welcome to the community</h1>
38</body>
39</html>
40```
41
42*/
43
44#[derive(Serialize)]
45pub struct User<'a> {
46    first_name: &'a str,
47    last_name: &'a str,
48    email: &'a str
49}
50
51fn main() {
52    let server = server("127.0.0.1", 9999)
53        .view("views");
54
55
56    server.router().group("/", |router| {
57        router.get("/", async |_req, res| {
58            let mut data = ViewData::new();
59
60            data.insert("user", &User{
61                first_name: "Jeo",
62                last_name: "Deo",
63                email: "jeo.deo@gmail.com",
64            });
65
66            return res.view("index.html", Some(data));
67        });
68        router.get("/render", async |_req, res| {
69            let user = User{
70                first_name: "Jeo",
71                last_name: "Deo",
72                email: "jeo.deo@gmail.com",
73            };
74
75            // This helper function is useful when sending email`s etc.
76            let html = view_render("render.html", Some(ViewData::with("user", &user))).unwrap();
77
78            return res.html(&html);
79        });
80    });
81
82    println!("Running Server: {}", server.address());
83
84    server.listen();
85}