From 7a0cf00cbc09fb1b293067b4fe7d742711099011 Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Sun, 7 Jul 2024 15:13:13 +0200 Subject: [PATCH] Accept IpAddr or Ipv6Addr as socket. Added port in builder for only specifying port --- Cargo.lock | 2 +- Cargo.toml | 2 +- examples/multipart_file/Cargo.lock | 2 +- src/axum/app.rs | 19 +++++++++++++++---- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 49e01d7..685d8eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -294,7 +294,7 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lib" -version = "1.3.4" +version = "1.3.5" dependencies = [ "axum", "derive", diff --git a/Cargo.toml b/Cargo.toml index 198e2f3..b37a9e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lib" -version = "1.3.4" +version = "1.3.5" edition = "2021" authors = ["Martin Berg Alstad"] homepage = "emberal.github.io" diff --git a/examples/multipart_file/Cargo.lock b/examples/multipart_file/Cargo.lock index 70cf2bc..960b7f7 100644 --- a/examples/multipart_file/Cargo.lock +++ b/examples/multipart_file/Cargo.lock @@ -286,7 +286,7 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lib" -version = "1.3.4" +version = "1.3.5" dependencies = [ "axum", "thiserror", diff --git a/src/axum/app.rs b/src/axum/app.rs index dbe2a63..1dfdd67 100644 --- a/src/axum/app.rs +++ b/src/axum/app.rs @@ -1,3 +1,4 @@ +use std::net::IpAddr; use { axum::{extract::Request, handler::Handler, Router, ServiceExt}, std::{io, net::Ipv4Addr, net::SocketAddr}, @@ -26,7 +27,7 @@ macro_rules! create_app { #[derive(Default)] pub struct AppBuilder { router: Router, - socket: Option<(Ipv4Addr, u16)>, + socket: Option<(IpAddr, u16)>, cors: Option, normalize_path: Option, tracing: Option>, @@ -47,8 +48,18 @@ impl AppBuilder { self } - pub fn socket(mut self, socket: impl Into<(Ipv4Addr, u16)>) -> Self { - self.socket = Some(socket.into()); + pub fn socket>(mut self, socket: impl Into<(IP, u16)>) -> Self { + 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 } @@ -91,7 +102,7 @@ impl AppBuilder { } async fn listener(&self) -> io::Result { - 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}"); TcpListener::bind(&addr).await }