Expand description
Routerify <> Hyperlocal Serve unix sockets with routerify
Basic usage works by replacing RouterService
with UnixRouterService
, which adapts the
request in order to be compatible with RequestService
.
Since routerify requires an IP SocketAddr
, the loopback address 127.0.0.1
with port 0 is used as a placeholder.
In order to access the unix socket’s peer address and peer credential, the UnixRequestExt
extension traits adds methods to the request object.
§Example
use hyper::{Body, Response, Server};
use hyperlocal::UnixServerExt;
use routerify::{Error, Router};
use routerify_unixsocket::{UnixRequestExt, UnixRouterService};
use std::{fs, path::Path};
#[tokio::main]
async fn main() {
let path = Path::new("/tmp/hyperlocal.sock");
if path.exists() {
fs::remove_file(path).unwrap();
}
let router: Router<Body, Error> = Router::builder()
.get("/", |req| async move {
let s = format!("You are: {:?}", req.unix_peer_cred());
Ok(Response::new(Body::from(s)))
})
.build()
.unwrap();
let service = UnixRouterService::new(router).unwrap();
Server::bind_unix(path)
.unwrap()
.serve(service)
.await
.unwrap()
}
Structs§
- A
Service
to process incoming requests. This is adapted from routerify’sRouterService
in order to support handling thetokio::net::UnixStream
instance passed byhyperlocal
Traits§
- A extension trait which extends the
hyper::Request
type with methods related to requests served through a unix socket.