webframework 0.0.2

An extensible webframework, its main purpose is to be: safe, fun, fast.
Documentation
extern crate webframework as wfw;

use crate::wfw::prelude::*;

use std::collections::HashMap;

use hyper::{Request as HyperRequest, Body};
use slog;
use uuid;

#[controller]
fn handle_it(_req: &Request) -> WebResult<Response> {
    Ok(Response::from_string("Response it"))
}

routing! {
    SimpleRouter => {
        GET "/" => handle_it;
        GET "/bar/:test" => handle_it;
    }
}

routing! {
    ComplexRouter => {
        POST "/test" => {
            html => handle_it;
        };
    }
}

fn new_request(path: &str) -> Request {
    use futures::Future;

    let req = HyperRequest::get(path).body(Body::empty()).unwrap();
    let logger = slog::Logger::root(slog::Discard, slog::o!());
    let id = uuid::Uuid::new_v4();

    Request::from_req(id, logger, req).wait().unwrap()
}

#[test]
fn check_router() {
    let _router = SimpleRouter;
    let _router = ComplexRouter;
}

#[test]
fn check_routing() {
    let router = SimpleRouter;

    let req = new_request("/");
    assert!(router.handle(req, None, HashMap::new()).is_handled());

    let req = new_request("/foo");
    assert!(router.handle(req, None, HashMap::new()).is_unhandled());

    let req = new_request("/bar/foo");
    assert!(router.handle(req, None, HashMap::new()).is_handled());

    let req = new_request("/bar/foo/nope");
    assert!(router.handle(req, None, HashMap::new()).is_unhandled());
}

#[controller(params = "test")]
fn dynamic(test: String)-> WebResult<Response> {
    assert_eq!(test, "foo");

    Ok(Response::from_string(""))
}

routing! {
    DynamicRouter => {
        GET "/bar/:test" => dynamic;
    }
}

#[test]
fn check_dynamic() {
    let router = DynamicRouter;

    let req = new_request("/bar/foo");
    assert!(router.handle(req, None, HashMap::new()).is_handled());
}