2016-08-07 06:14:05 +00:00
|
|
|
#![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};
|
2016-08-08 10:10:23 +00:00
|
|
|
use rocket::Method;
|
2016-08-07 06:14:05 +00:00
|
|
|
|
|
|
|
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 = "/")]
|
2016-08-08 10:10:23 +00:00
|
|
|
fn index(method: Method) -> tera::TeraResult<String> {
|
|
|
|
println!("Method is: {}", method);
|
2016-08-07 06:14:05 +00:00
|
|
|
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();
|
|
|
|
}
|