Skip to main content

subdomain/
subdomain.rs

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