#![recursion_limit="1024"] #[macro_use] extern crate gotham_derive; use std::sync::{Arc, Mutex}; use gotham::{ handler::assets::FileOptions, router::builder::{DefineSingleRoute, DrawRoutes}, middleware::state::StateMiddleware, pipeline::single::single_pipeline, pipeline::single_middleware, router::builder::*, }; use diesel::{Connection, pg::PgConnection}; use libticker::config::Config; mod index; #[derive(Clone, StateData)] pub struct AppState { pub db: Arc>, } fn main() { let config = Config::read_yaml_file("../config.yaml"); let db = PgConnection::establish(&config.db_url) .expect("DB"); let state = AppState { db: Arc::new(Mutex::new(db)) }; let (chain, pipelines) = single_pipeline( single_middleware( StateMiddleware::new(state) ) ); let router = build_router(chain, pipelines, |route| { route.get("/").to(index::index); route.get("static/*").to_dir( FileOptions::new(&"static") // TODO: .with_cache_control("no-cache") .with_gzip(true) .build() ); }); gotham::start("[::1]:8400", router) }