NewService to MakeService with connection context
This adjusts the way `Service`s are created for a `hyper::Server`. The `MakeService` trait allows receiving an argument when creating a `Service`. The implementation for `hyper::Server` expects to pass a reference to the accepted transport (so, `&Incoming::Item`). The user can inspect the transport before making a `Service`. In practice, this allows for things like getting the remote socket address, or the TLS certification, or similar. To prevent a breaking change, there is a blanket implementation of `MakeService` for any `NewService`. Besides implementing `MakeService` directly, there is also added `hyper::service::make_service_fn`. Closes #1650
hyper
A fast and correct HTTP implementation for Rust.
Get started by looking over the guides.
Overview
hyper is a fast, safe HTTP implementation written in and for Rust.
hyper offers both an HTTP client and server which can be used to drive complex web applications written entirely in Rust.
hyper makes use of "async IO" (non-blocking sockets) via the Tokio and Futures crates.
Be aware that hyper is still actively evolving towards 1.0, and is likely
to experience breaking changes before stabilising. However, this mostly now
around the instability of Future and async. The rest of the API is rather
stable now. You can also see the
issues in the upcoming milestones.
Contributing
To get involved, take a look at CONTRIBUTING.
There are two main avenues for real-time chatting about hyper: a Gitter room and irc.mozilla.org/hyper. They are mirrored, so choose whichever format you prefer.
License
hyper is provided under the MIT license. See LICENSE.