From a55c63ffa60e37bed1008814c4323030e40ba77d Mon Sep 17 00:00:00 2001 From: Jean-Gabriel Gill-Couture Date: Wed, 8 Jan 2025 11:49:42 -0500 Subject: [PATCH] feat(harmony_macros): add ipv4 macro Adds a new `ipv4` macro to validate IPv4 addresses in proc macros. Removes unused `debug` import from `http.rs`. --- harmony-rs/harmony/src/infra/opnsense/http.rs | 4 ++-- harmony-rs/harmony_macros/src/lib.rs | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/harmony-rs/harmony/src/infra/opnsense/http.rs b/harmony-rs/harmony/src/infra/opnsense/http.rs index e824392..3c33bba 100644 --- a/harmony-rs/harmony/src/infra/opnsense/http.rs +++ b/harmony-rs/harmony/src/infra/opnsense/http.rs @@ -1,5 +1,5 @@ use async_trait::async_trait; -use log::{debug, info}; +use log::info; use crate::{ executors::ExecutorError, @@ -22,7 +22,7 @@ impl HttpServer for OPNSenseFirewall { .await .map_err(|e| ExecutorError::UnexpectedError(e.to_string()))?; } - Url::Remote(url) => todo!(), + Url::Remote(_url) => todo!(), } Ok(()) } diff --git a/harmony-rs/harmony_macros/src/lib.rs b/harmony-rs/harmony_macros/src/lib.rs index 0d01e7e..69d7149 100644 --- a/harmony-rs/harmony_macros/src/lib.rs +++ b/harmony-rs/harmony_macros/src/lib.rs @@ -25,6 +25,19 @@ pub fn ip(input: TokenStream) -> TokenStream { panic!("Invalid IP address: {}", ip_str); } +#[proc_macro] +pub fn ipv4(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as LitStr); + let ip_str = input.value(); + + if let Ok(_) = ip_str.parse::() { + let expanded = quote! { #ip_str.parse::().unwrap() }; + return TokenStream::from(expanded); + } + + panic!("Invalid IPv4 address: {}", ip_str); +} + #[proc_macro] pub fn mac_address(input: TokenStream) -> TokenStream { let input = parse_macro_input!(input as LitStr);