Rocket/examples/cookies/src/main.rs

44 lines
978 B
Rust
Raw Normal View History

#![feature(proc_macro_hygiene, async_await)]
#[macro_use] extern crate rocket;
2016-12-29 20:06:31 +00:00
#[cfg(test)]
mod tests;
use std::collections::HashMap;
use rocket::request::Form;
use rocket::response::Redirect;
use rocket::http::{Cookie, Cookies};
2018-10-07 00:24:11 +00:00
use rocket_contrib::templates::Template;
#[derive(FromForm)]
struct Message {
2016-12-29 20:06:31 +00:00
message: String,
}
#[post("/submit", data = "<message>")]
2019-06-13 02:41:29 +00:00
fn submit(mut cookies: Cookies<'_>, message: Form<Message>) -> Redirect {
cookies.add(Cookie::new("message", message.into_inner().message));
Redirect::to("/")
}
2016-09-04 11:06:28 +00:00
#[get("/")]
2019-06-13 02:41:29 +00:00
fn index(cookies: Cookies<'_>) -> Template {
let cookie = cookies.get("message");
let mut context = HashMap::new();
if let Some(ref cookie) = cookie {
context.insert("message", cookie.value());
}
Template::render("index", &context)
}
fn rocket() -> rocket::Rocket {
rocket::ignite().mount("/", routes![submit, index]).attach(Template::fairing())
}
fn main() {
rocket().launch();
}