finchers-template 0.1.1

Template engine support for Finchers.
Documentation
#![cfg(feature = "handlebars")]

#[macro_use]
extern crate finchers;
extern crate finchers_template;
#[macro_use]
extern crate log;
extern crate pretty_env_logger;
#[macro_use]
extern crate serde;
extern crate handlebars;

use finchers::prelude::*;
use finchers_template::renderer;

use handlebars::Handlebars;

#[derive(Debug, Serialize)]
struct UserInfo {
    name: String,
}

impl UserInfo {
    const TEMPLATE_NAME: &'static str = "index.html";

    const TEMPLATE_STR: &'static str = "\
    <!doctype html>
    <html>
    <head>
        <meta charset=\"utf-8\" />
        <title>Greeting</title>
    </head>
    <body>
        Hello, {{ name }}.
    </body>
    </html>";
}

fn main() {
    pretty_env_logger::init();

    let mut engine = Handlebars::new();
    engine
        .register_template_string(UserInfo::TEMPLATE_NAME, UserInfo::TEMPLATE_STR)
        .unwrap();

    let endpoint = path!(@get /)
        .map(|| UserInfo {
            name: "Alice".into(),
        }).wrap(renderer(engine, UserInfo::TEMPLATE_NAME));

    info!("Listening on http://127.0.0.1:4000");
    finchers::launch(endpoint).start("127.0.0.1:4000");
}