1use vegemite::{
2 framework::run, routing::Route, sys, systems::Html, Get, MaybeIntoResponse, Resolve,
3 ResolveGuard,
4};
5
6struct Auth {
7 #[allow(unused)]
8 token: String,
9}
10
11impl Resolve for Auth {
12 fn resolve(ctx: &mut vegemite::RequestState) -> ResolveGuard<Self> {
13 match ctx.request.headers().get("Authorization") {
14 Some(v) => ResolveGuard::Value(Auth {
15 token: v.to_str().unwrap().to_string(),
16 }),
17 None => ResolveGuard::Respond(401u16.maybe_response().unwrap()),
18 }
19 }
20}
21
22fn middleware(_auth: Auth) {
23 }
26
27fn get_page(_get: Get) -> Html {
28 Html("<h1> This page is for authorized personnel only </h1>".to_string())
29}
30
31fn main() {
32 let router = Route::new(sys![middleware]).route("page", sys![get_page]);
34
35 println!("Try connecting on a browser at 'http://localhost:8080/page'");
36
37 run("127.0.0.1:5000", router)
38}