ユーザ側は必要最低限の実装で済むようにする
use std::collections::HashMap; mod ares; use ares::{Router, HttpResponse, parse, signup, logup, redirect}; fn main() { let mut router = Router::new(); router.get("index", handle_index); router.get("hello", handle_hello); router.get("signin", handle_signin); router.post("signup", handle_signup); router.get("login", handle_login); router.post("logup", handle_logup); router.post("test", handle_test); let needs_auth = Some(vec!["/index", "/hello"]); router.up("192.168.33.10:8000", needs_auth); } fn handle_index() -> Option<HashMap<&'static str, &'static str>> { let mut content1 = HashMap::new(); content1.insert( "title", "This is index page!", ); return Some(content1); } fn handle_hello() -> Option<HashMap<&'static str, &'static str>> { return None; } fn handle_signin() -> Option<HashMap<&'static str, &'static str>> { return None; } fn handle_signup(body: String) -> HttpResponse { let form = parse(&body); let binding = "<unknown>".to_string(); let name = form.get("name").unwrap_or(&binding); let password = form.get("password").unwrap_or(&binding); let redirect_path = "/index"; signup(name, password, redirect_path) } fn handle_login() -> Option<HashMap<&'static str, &'static str>> { return None; } fn handle_logup(body: String) -> HttpResponse { let form = parse(&body); let binding = "<unknown>".to_string(); let name = form.get("name").unwrap_or(&binding); let password = form.get("password").unwrap_or(&binding); let login_success_path = "/index"; let login_failure_path = "/login"; logup(name, password, login_success_path, login_failure_path) } fn handle_test(_body: String) -> HttpResponse { redirect("/index"); HttpResponse::new(200, "<h1>This is Test!</h1>") }
大分簡素になりました。