diff --git a/README.md b/README.md index 3cb6f2308..be8160968 100644 --- a/README.md +++ b/README.md @@ -14,20 +14,20 @@ Actix http ## Example ```rust +// see examples/framed_hello.rs for complete list of used crates. extern crate actix_http; use actix_http::{h1, Response, ServiceConfig}; fn main() { - Server::new() - .bind("app", addr, move || { - IntoFramed::new(|| h1::Codec::new(ServiceConfig::default())) // <- create h1 codec - .and_then(TakeItem::new().map_err(|_| ())) // <- read one request - .and_then(|(req, framed): (_, Framed<_, _>)| { // <- send response and close conn - framed - .send(h1::OutMessage::Response(Response::Ok().finish())) - }) - }) - .run(); + Server::new().bind("framed_hello", "127.0.0.1:8080", || { + IntoFramed::new(|| h1::Codec::new(ServiceConfig::default())) // <- create h1 codec + .and_then(TakeItem::new().map_err(|_| ())) // <- read one request + .and_then(|(_req, _framed): (_, Framed<_, _>)| { // <- send response and close conn + SendResponse::send(_framed, Response::Ok().body("Hello world!")) + .map_err(|_| ()) + .map(|_| ()) + }) + }).unwrap().run(); } ``` diff --git a/examples/echo.rs b/examples/echo.rs new file mode 100644 index 000000000..91a3c76ad --- /dev/null +++ b/examples/echo.rs @@ -0,0 +1,42 @@ +#[macro_use] +extern crate log; +extern crate env_logger; + +extern crate actix_http; +extern crate actix_net; +extern crate futures; +extern crate http; +extern crate bytes; + +use actix_http::{h1, Response, Request}; +use bytes::Bytes; +use actix_net::server::Server; +use actix_net::service::NewServiceExt; +use futures::Future; +use http::header::{HeaderValue}; +use actix_http::HttpMessage; +use std::env; + +fn main() { + env::set_var("RUST_LOG", "echo=info"); + env_logger::init(); + + Server::new().bind("echo", "127.0.0.1:8080", || { + h1::H1Service::build() + .client_timeout(1000) + .client_disconnect(1000) + .server_hostname("localhost") + .finish(|_req: Request| { + _req.body() + .limit(512) + .and_then(|bytes: Bytes| { + info!("request body: {:?}", bytes); + let mut res = Response::Ok(); + res.header("x-head", HeaderValue::from_static("dummy value!")); + Ok(res.body(bytes)) + }) + }) + .map(|_| ()) + }).unwrap().run(); +} + diff --git a/examples/framed_hello.rs b/examples/framed_hello.rs new file mode 100644 index 000000000..76d23d08c --- /dev/null +++ b/examples/framed_hello.rs @@ -0,0 +1,33 @@ +extern crate log; +extern crate env_logger; + +extern crate actix_http; +extern crate actix_net; +extern crate futures; +extern crate http; +extern crate bytes; + +use actix_http::{h1, ServiceConfig, SendResponse, Response}; +use actix_net::framed::IntoFramed; +use actix_net::codec::Framed; +use actix_net::stream::TakeItem; +use actix_net::server::Server; +use actix_net::service::NewServiceExt; +use futures::Future; +use std::env; + +fn main() { + env::set_var("RUST_LOG", "framed_hello=info"); + env_logger::init(); + + Server::new().bind("framed_hello", "127.0.0.1:8080", || { + IntoFramed::new(|| h1::Codec::new(ServiceConfig::default())) + .and_then(TakeItem::new().map_err(|_| ())) + .and_then(|(_req, _framed): (_, Framed<_, _>)| { + SendResponse::send(_framed, Response::Ok().body("Hello world!")) + .map_err(|_| ()) + .map(|_| ()) + }) + }).unwrap().run(); +} +