Rocket/examples/cookies/src/main.rs

43 lines
1.1 KiB
Rust
Raw Normal View History

#![feature(plugin, custom_derive, custom_attribute)]
#![plugin(rocket_macros)]
#[macro_use]
extern crate lazy_static;
extern crate rocket;
extern crate tera;
use rocket::Rocket;
use rocket::response::{Cookied, Redirect};
use rocket::Method;
lazy_static!(static ref TERA: tera::Tera = tera::Tera::new("templates/**/*"););
fn ctxt(message: Option<&str>) -> tera::Context {
let mut context = tera::Context::new();
context.add("have_message", &message.is_some());
context.add("message", &message.unwrap_or("").to_string());
context
}
#[derive(FromForm)]
struct Message {
message: String
}
#[route(POST, path = "/submit", form = "<message>")]
fn submit(message: Message) -> Cookied<Redirect> {
Cookied::new(Redirect::to("/")).add("message", &message.message)
}
#[route(GET, path = "/")]
fn index(method: Method) -> tera::TeraResult<String> {
println!("Method is: {}", method);
TERA.render("index.html", ctxt(None))
}
fn main() {
let mut rocket = Rocket::new("127.0.0.1", 8000);
rocket.mount("/", routes![submit, index]);
rocket.launch();
}