extern crate backtalk;
extern crate futures;
use backtalk::*;
use std::sync::Arc;
fn main() {
let mut s = Server::new();
s.resource("/meow", |_req: Request| {
Error::forbidden("not allowed! sorry.")
});
let adapter = Arc::new(memory::MemoryAdapter::new());
let channel = Arc::new(memory::MemoryChannel::new());
s.resource("/hello2", move |req: Request| {
req
.and_then(|req| {
req.into_reply(JsonObject::new())
})
});
s.resource("/hello", move |req: Request| {
let adapter = adapter.clone();
let channel1 = channel.clone();
req
.and_then(move |req| {
match req.method().clone() {
Method::Action(_) => Error::forbidden("not allowed! sorry."),
Method::Listen => channel1.handle(req),
_ => adapter.handle(req),
}
})
});
s.listen("127.0.0.1:3000");
}