#![cfg(feature = "use-hyper")] extern crate api; extern crate hyper; extern crate serde; #[macro_use] extern crate serde_derive; extern crate serde_json; use std::io; use api::Client; struct Delay { delay: u8 } #[derive(Debug, Deserialize)] struct Info { origin: String, url: String, } impl api::Api for Delay { type Reply = Info; type Body = io::Empty; type Error = serde_json::Error; fn method(&self) -> api::Method { api::Method::Get } fn path(&self) -> String { format!("/delay/{}", self.delay) } fn query(&self) -> api::Query { api::Query::new() } fn headers(&self) -> api::Headers { api::Headers::new() } fn body(&self) -> io::Empty { io::empty() } fn parse(&self, resp: &mut H) -> Result where H: api::HttpResponse { serde_json::from_reader(resp.body()) } } fn main() { let mut client = hyper::Client::new(); let resp = client.send("http://httpbin.org/", Delay { delay: 1 }); println!("{:?}", resp); }