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}