3 Commits
1.3.4 ... 1.3.5

Author SHA1 Message Date
7a0cf00cbc Accept IpAddr or Ipv6Addr as socket.
Added port in builder for only specifying port
2024-07-07 15:13:13 +02:00
971556af64 Merge remote-tracking branch 'origin/master' 2024-07-06 13:27:38 +02:00
b685d81e00 comment 2024-07-03 11:24:28 +02:00
5 changed files with 19 additions and 7 deletions

2
Cargo.lock generated
View File

@ -294,7 +294,7 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]] [[package]]
name = "lib" name = "lib"
version = "1.3.4" version = "1.3.5"
dependencies = [ dependencies = [
"axum", "axum",
"derive", "derive",

View File

@ -1,6 +1,6 @@
[package] [package]
name = "lib" name = "lib"
version = "1.3.4" version = "1.3.5"
edition = "2021" edition = "2021"
authors = ["Martin Berg Alstad"] authors = ["Martin Berg Alstad"]
homepage = "emberal.github.io" homepage = "emberal.github.io"

View File

@ -286,7 +286,7 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]] [[package]]
name = "lib" name = "lib"
version = "1.3.4" version = "1.3.5"
dependencies = [ dependencies = [
"axum", "axum",
"thiserror", "thiserror",

View File

@ -1,3 +1,4 @@
use std::net::IpAddr;
use { use {
axum::{extract::Request, handler::Handler, Router, ServiceExt}, axum::{extract::Request, handler::Handler, Router, ServiceExt},
std::{io, net::Ipv4Addr, net::SocketAddr}, std::{io, net::Ipv4Addr, net::SocketAddr},
@ -26,7 +27,7 @@ macro_rules! create_app {
#[derive(Default)] #[derive(Default)]
pub struct AppBuilder { pub struct AppBuilder {
router: Router, router: Router,
socket: Option<(Ipv4Addr, u16)>, socket: Option<(IpAddr, u16)>,
cors: Option<CorsLayer>, cors: Option<CorsLayer>,
normalize_path: Option<bool>, normalize_path: Option<bool>,
tracing: Option<TraceLayer<HttpMakeClassifier>>, tracing: Option<TraceLayer<HttpMakeClassifier>>,
@ -47,8 +48,18 @@ impl AppBuilder {
self self
} }
pub fn socket(mut self, socket: impl Into<(Ipv4Addr, u16)>) -> Self { pub fn socket<IP: Into<IpAddr>>(mut self, socket: impl Into<(IP, u16)>) -> Self {
self.socket = Some(socket.into()); let (ip, port) = socket.into();
self.socket = Some((ip.into(), port));
self
}
pub fn port(mut self, port: u16) -> Self {
self.socket = if let Some((ip, _)) = self.socket {
Some((ip, port))
} else {
Some((Ipv4Addr::UNSPECIFIED.into(), port))
};
self self
} }
@ -91,7 +102,7 @@ impl AppBuilder {
} }
async fn listener(&self) -> io::Result<TcpListener> { async fn listener(&self) -> io::Result<TcpListener> {
let addr = SocketAddr::from(self.socket.unwrap_or((Ipv4Addr::UNSPECIFIED, 8000))); let addr = SocketAddr::from(self.socket.unwrap_or((Ipv4Addr::UNSPECIFIED.into(), 8000)));
info!("Initializing server on: {addr}"); info!("Initializing server on: {addr}");
TcpListener::bind(&addr).await TcpListener::bind(&addr).await
} }

View File

@ -31,6 +31,7 @@ pub fn parenthesized<'a, Parser, R>(inner: Parser) -> impl FnMut(&'a str) -> IRe
where where
Parser: FnMut(&'a str) -> IResult<&'a str, R>, Parser: FnMut(&'a str) -> IResult<&'a str, R>,
{ {
// TODO move trim out of here
delimited(char('('), trim(inner), char(')')) delimited(char('('), trim(inner), char(')'))
} }