3 releases (1 stable)
3.0.0 | Jan 15, 2022 |
---|---|
0.1.1 | Mar 20, 2021 |
0.1.0 | Mar 20, 2021 |
#1126 in HTTP server
430 downloads per month
Used in minidsp-daemon
14KB
142 lines
routerify-unixsocket
Routerify <> Hyperlocal
Usage
Serve unix sockets with routerify
Basic usage works by replacing RouterService
with UnixRouterService
, which adapts the
request in order to be compatible with routerify's 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 trait 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()
}
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~8–19MB
~241K SLoC