From 026ca96f3c1a852147ab2680475fbd05382628d0 Mon Sep 17 00:00:00 2001 From: Pablo Andres Dealbera Date: Tue, 4 Feb 2025 22:46:12 -0300 Subject: [PATCH] fix: remove zone_id, zone_name and update functions --- src/dns.rs | 30 ++++++++++++++++++------------ src/ip.rs | 4 ++-- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/dns.rs b/src/dns.rs index ca74504..4302772 100644 --- a/src/dns.rs +++ b/src/dns.rs @@ -28,16 +28,20 @@ trait Info { } pub trait Requests { - fn update_request( - &self, + fn update_request<'a>( + &'a self, ip: IpAddr, - ) -> Option; + id: &'a str, + ) -> Option>; fn create_request<'a>( ip: IpAddr, name: &'a str, id: &'a str, ) -> CreateDnsRecord<'a>; - fn delete_request(&self) -> DeleteDnsRecord; + fn delete_request<'a>( + &'a self, + id: &'a str, + ) -> DeleteDnsRecord<'a>; } impl Clone_ for DnsRecord { fn clone(&self) -> Self { @@ -47,14 +51,12 @@ impl Clone_ for DnsRecord { auto_added: self.meta.auto_added, }, ttl: self.ttl, - zone_id: self.zone_id.to_owned(), modified_on: self.modified_on, created_on: self.created_on, proxiable: self.proxiable, proxied: self.proxied, content: self.content.to_owned(), id: self.id.to_owned(), - zone_name: self.zone_name.to_owned(), } } } @@ -84,10 +86,11 @@ impl Info for DnsContent { } impl Requests for DnsRecord { - fn update_request( - &self, + fn update_request<'a>( + &'a self, ip: IpAddr, - ) -> Option { + id: &'a str, + ) -> Option> { let current_ip = self.content.get_ip()?; if ip == current_ip { @@ -111,7 +114,7 @@ impl Requests for DnsRecord { log::info!("request: {} ({} → {})\n", self.name, current_ip, ip); Some(UpdateDnsRecord { - zone_identifier: &self.zone_id, + zone_identifier: id, identifier: &self.id, params: UpdateDnsRecordParams { name: &self.name, @@ -142,14 +145,17 @@ impl Requests for DnsRecord { } } - fn delete_request(&self) -> DeleteDnsRecord { + fn delete_request<'a>( + &'a self, + id: &'a str, + ) -> DeleteDnsRecord<'a> { log::info!( "deleting {} record: {}\n", self.content.get_type(), self.name ); DeleteDnsRecord { - zone_identifier: &self.zone_id, + zone_identifier: id, identifier: &self.id, } } diff --git a/src/ip.rs b/src/ip.rs index b1f50c8..329bc76 100644 --- a/src/ip.rs +++ b/src/ip.rs @@ -33,7 +33,7 @@ impl DynDns for Option { match rec.content { DnsContent::A { content: _ } | DnsContent::AAAA { content: _ } => Some(tokio::spawn(async move { - if let Some(req) = rec.update_request(ip) { + if let Some(req) = rec.update_request(ip, &id) { client.request(&req).await?; } Ok(()) @@ -51,7 +51,7 @@ impl DynDns for Option { } else { rec.map(|rec| { tokio::spawn(async move { - client.request(&rec.delete_request()).await?; + client.request(&rec.delete_request(&id)).await?; Ok(()) }) })