From ce01d9befd7f11a1e716d389ec094c399240a538 Mon Sep 17 00:00:00 2001 From: Lucy Date: Wed, 26 Jan 2022 13:27:51 -0500 Subject: [PATCH] Settings object (again) --- networkmanager/src/settings/connection.rs | 51 +++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/networkmanager/src/settings/connection.rs b/networkmanager/src/settings/connection.rs index 6a43690..371282a 100644 --- a/networkmanager/src/settings/connection.rs +++ b/networkmanager/src/settings/connection.rs @@ -55,6 +55,57 @@ macro_rules! derive_value_build { }; } +#[derive(Debug, Default, Builder, Clone)] +pub struct Settings { + #[builder(setter(strip_option))] + pub connection: Option, + #[builder(setter(strip_option))] + pub ethernet: Option, + #[builder(setter(strip_option))] + pub wifi: Option, + #[builder(setter(strip_option))] + pub bluetooth: Option, + #[builder(setter(strip_option))] + pub ipv4: Option, + #[builder(setter(strip_option))] + pub ipv6: Option, + #[builder(setter(strip_option))] + pub proxy: Option, +} + +impl Settings { + pub fn build( + &self, + ) -> std::collections::HashMap< + String, + std::collections::HashMap>, + > { + let mut out = std::collections::HashMap::new(); + if let Some(val) = &self.connection { + out.insert("connection".into(), val.build()); + } + if let Some(val) = &self.ethernet { + out.insert("802-3-ethernet".into(), val.build()); + } + if let Some(val) = &self.wifi { + out.insert("802-11-wireless".into(), val.build()); + } + if let Some(val) = &self.bluetooth { + out.insert("bluetooth".into(), val.build()); + } + if let Some(val) = &self.ipv4 { + out.insert("ipv4".into(), val.build()); + } + if let Some(val) = &self.ipv6 { + out.insert("ipv6".into(), val.build()); + } + if let Some(val) = &self.proxy { + out.insert("proxy".into(), val.build()); + } + out + } +} + derive_value_build!( ConnectionSettings, (auth_retries("auth-retries"): i32),