1use std::time::Duration;
2
3use flyer::{
4 request::Request,
5 response::Response,
6 server,
7 session::cookie::SessionCookieManager,
8 view::ViewData
9};
10
11pub async fn home<'a>(_req: &'a mut Request, res: &'a mut Response) -> &'a mut Response {
51 return res.view("index.html", Some(ViewData::new()));
52}
53
54pub async fn upload<'a>(req: &'a mut Request, res: &'a mut Response) -> &'a mut Response {
55 if req.file("file").is_none() {
56 return res.with_error("file", "The file is required.")
57 .back();
58 }
59
60 req.file("file").unwrap().save("file").await.unwrap();
61 req.file("file").unwrap().save_as("storage", "file_backup").await.unwrap();
62
63 return res.redirect("/");
64}
65
66fn main() {
67 let server = server("127.0.0.1", 9999)
68 .session(SessionCookieManager::new(Duration::from_secs((60 * 60) * 2), "session_cookie_key_name", "encryption"))
69 .view("views")
70 .set_request_max_size(1024 * 100); server.router().group("/", |router| {
73 router.get("/", home);
74 router.post("upload", upload);
75 });
76
77 print!("\r\n\r\nRunning server: {}\r\n\r\n", server.address());
78
79 server.listen();
80}