6/
6.rs

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}