1extern crate backtalk;
2use backtalk::*;
3extern crate futures;
4use futures::future::Future;
5#[macro_use]
6extern crate serde_json;
7
8fn main() {
9 let mut server = Server::new();
10 use std::sync::Arc;
11 let database = Arc::new(memory::MemoryAdapter::new());
12 server.resource("/cats", move |req: Request| {
13 let database1 = database.clone();
14 req
15 .and_then(move |req| {
16 if req.method() == Method::Delete {
17 if let &JsonValue::String(ref password) = req.param("password") {
18 if password != "meow" {
19 return Error::forbidden("incorrect password");
20 }
21 } else {
22 return Error::unauthorized("please provide a password");
23 }
24 }
25 req.boxed()
26 })
27 .and_then(move |req| {
28 database1.handle(req)
29 })
30 });
31 server.listen("127.0.0.1:3000");
32}