1extern crate backtalk;
2use backtalk::*;
3extern crate futures;
4use futures::Future;
5#[macro_use]
6extern crate serde_json;
7
8fn main() {
9 let mut server = Server::new();
10 use std::sync::Arc;
11 use std::ops::Deref;
12 let database = Arc::new(memory::MemoryAdapter::new());
13 let chan = Arc::new(memory::MemoryChannel::new());
14 server.resource("/cats", move |req: Request| {
15 let database1 = database.clone();
16 let chan1 = chan.clone();
17 let chan2 = chan.clone();
18 req
19 .and_then(move |req| {
20 match req.method() {
21 Method::Listen => chan1.handle(req),
22 _ => database1.handle(req),
23 }
24 })
25 .and_then(move |reply| {
26 util::send_from_reply(reply, chan2.deref())
27 })
28 });
29 server.listen("127.0.0.1:3000");
30}