https://github.com/routerify/routerify-unixsocket
Use hyperlocal with routerify to add local unix socket support
https://github.com/routerify/routerify-unixsocket
Last synced: 5 months ago
JSON representation
Use hyperlocal with routerify to add local unix socket support
- Host: GitHub
- URL: https://github.com/routerify/routerify-unixsocket
- Owner: routerify
- License: apache-2.0
- Created: 2021-03-20T13:17:49.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-08-06T18:14:21.000Z (almost 2 years ago)
- Last Synced: 2025-01-01T16:39:56.045Z (6 months ago)
- Language: Rust
- Homepage:
- Size: 46.9 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# routerify-unixsocket
[](https://crates.io/crates/routerify-unixsocket)
[](https://docs.rs/routerify-unixsocket)
[](https://github.com/routerify/routerify-unixsocket/actions)
[](https://coveralls.io/github/routerify/routerify-unixsocket?branch=master)Routerify <> Hyperlocal
## Usage
Serve unix sockets with routerifyBasic 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
```rust
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 = 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](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license
([LICENSE-MIT](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.