1extern crate backtalk;
2extern crate futures;
3
4use backtalk::*;
5use std::sync::Arc;
6
7fn main() {
8 let mut s = Server::new();
9 s.resource("/meow", |_req: Request| {
10 Error::forbidden("not allowed! sorry.")
11 });
12 let adapter = Arc::new(memory::MemoryAdapter::new());
13 let channel = Arc::new(memory::MemoryChannel::new());
14 s.resource("/hello2", move |req: Request| {
15 req
16 .and_then(|req| {
17 req.into_reply(JsonObject::new())
18 })
19 });
20 s.resource("/hello", move |req: Request| {
21 let adapter = adapter.clone();
22 let channel1 = channel.clone();
23 req
25 .and_then(move |req| {
26 match req.method().clone() {
27 Method::Action(_) => Error::forbidden("not allowed! sorry."),
28 Method::Listen => channel1.handle(req),
29 _ => adapter.handle(req),
30 }
31 })
32 });
34 s.listen("127.0.0.1:3000");
35}