httpbin/
lib.rs

1//! A http bin library embeddable to any `tk-http` application
2//!
3//! Use `HttpBin` as a factory and `HttpBin::instantiate` to create
4//! `tk_http::server::Dispatcher`.
5//!
6//! # Example
7//!
8//! ```rust,no_run
9//! extern crate tokio_core;
10//! extern crate futures;
11//! extern crate tk_http;
12//! extern crate tk_listen;
13//! extern crate httpbin;
14//!
15//! use std::time::Duration;
16//! use tokio_core::reactor::Core;
17//! use tokio_core::net::{TcpListener};
18//! use futures::{Stream, Future};
19//! use httpbin::HttpBin;
20//! use tk_http::server::{Config, Proto};
21//! use tk_listen::ListenExt;
22//!
23//! # fn main() {
24//! let mut lp = Core::new().unwrap();
25//!
26//! let addr = "0.0.0.0:8080".parse().unwrap();
27//! let listener = TcpListener::bind(&addr, &lp.handle()).unwrap();
28//! let cfg = Config::new().done();
29//! let bin = HttpBin::new();
30//! let h1 = lp.handle();
31//!
32//! let done = listener.incoming()
33//!     .sleep_on_error(Duration::from_millis(100), &h1)
34//!     .map(move |(socket, addr)| {
35//!         Proto::new(socket, &cfg, bin.instantiate(addr), &h1)
36//!         .map_err(|e| { println!("Connection error: {}", e); })
37//!     })
38//!     .listen(1000);
39//!
40//! lp.run(done).unwrap();
41//! # }
42//!
43//! ```
44//!
45#![warn(missing_docs)]
46extern crate futures;
47extern crate httparse;
48extern crate httpdate;
49extern crate tk_bufstream;
50extern crate tk_http;
51extern crate tokio_core;
52#[macro_use] extern crate serde_json;
53
54mod service;
55mod pages;
56mod response;
57
58pub use service::{HttpBin, HttpBinDispatcher};