1use flyer::server;
2use flyer::utils::development::dns;
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize)]
6struct ApiInfo<'a> {
7 info: &'a str,
8 version: i32
9}
10
11fn main() {
12 let server = server("127.0.0.1", 80);
13
14 server.router().get("/", async |_req, res| {
15 return res.html("<h1>Home Page</h1>");
16 });
17
18 server.router().subdomain("api", |router| {
19 router.get("/", async |_req, res| {
20 return res.json(&ApiInfo {
21 info: "Application details",
22 version: 1
23 });
24 });
25 });
26
27 server.router().subdomain("{client}", |router| {
28 router.get("/", async |req, res| {
29 return res.html(format!("<h1>Client Name {}</h1>", req.parameter("client")).as_str());
30 });
31 });
32
33 server.router().subdomain("{client}.accounts.{account_id}", |router| {
34 router.get("/", async |req, res| {
35 return res.html(format!("<h1>Client Name {} Account {}</h1>", req.parameter("client"), req.parameter("account_id")).as_str());
36 });
37 });
38
39 server.init(async || {
40 tokio::spawn(async {
41 dns::run("tracker.com", "127.0.0.1", 5354);
42 });
43 });
44
45 print!("\r\n\r\nRunning server: {}\r\n\r\n", server.address());
46
47 server.listen();
48}
49