Skip to main content

12_validation/
12_validation.rs

1use flyer::{
2    request::Request,
3    response::Response,
4    routing::next::Next,
5    server,
6    validation::Rules,
7};
8
9pub async fn register_form(req: Request, res: Response, next: Next) -> Response {
10    let mut rules = Rules::new();
11
12    // Define rules
13    rules.rule("email", vec!["required", "email"]);
14    rules.rule("password", vec!["required", "min:5"]);
15
16    // Handle rules; if invalid, this will automatically handle the failure
17    return rules.handle(req, res, next).await;
18}
19
20pub async fn upload_documents_form(req: Request, res: Response, next: Next) -> Response {
21    let mut rules = Rules::new();
22
23    // Define rules
24    rules.rule("documents.*.name", vec!["required", "string", "min:5", "max:120"]);
25    rules.rule("documents.*.file", vec!["required_with:files.*.name", "extensions:pdf,docx"]);
26
27    // Handle rules; if invalid, this will automatically handle the failure
28    return rules.handle(req, res, next).await;
29}
30
31pub async fn register(_req: Request, res: Response) -> Response {
32    return res.html("<h1>Registration Successful!</h1>");
33}
34
35pub async fn upload(_req: Request, res: Response) -> Response {
36    return res.html("<h1>Uploaded Documents Successful!</h1>");
37}
38
39fn main() {
40    let server = server("127.0.0.1", 9999);
41
42    server.router().group("/", |router| {
43        router.post("register", register).middleware(register_form);
44        router.post("documents", upload).middleware(upload_documents_form);
45    });
46
47    print!("\r\n\r\nRunning server: {}\r\n\r\n", server.address());
48
49    server.listen();
50}