Skip to content

Commit f0356ab

Browse files
committed
connection: Add get_secrets
1 parent 93a3c72 commit f0356ab

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

src/connection.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::configs::{Dhcp4Config, Dhcp6Config, Ip4Config, Ip6Config};
22
use crate::dbus_api::DBusAccessor;
33
use crate::devices::Device;
44
use crate::gen::OrgFreedesktopNetworkManagerConnectionActive;
5+
use crate::gen::OrgFreedesktopNetworkManagerSettingsConnection;
56
use crate::types::{ActivationStateFlags, ActiveConnectionState};
67
use crate::Error;
78
use num_traits::FromPrimitive;
@@ -104,4 +105,30 @@ impl<'a> Connection<'a> {
104105
&dev_path,
105106
))
106107
}
108+
pub fn get_secrets(
109+
&self,
110+
setting_name: &str,
111+
) -> Result<std::collections::HashMap<String, Box<dyn dbus::arg::RefArg>>, Error> {
112+
let conn = proxy!(self).connection()?;
113+
// Our dbus_accessor represents an ActiveConnection, but we need to go to the underlying
114+
// Connection.
115+
let conn_accessor = DBusAccessor::new(
116+
self.dbus_accessor.connection,
117+
&self.dbus_accessor.bus,
118+
&conn,
119+
);
120+
let secrets = conn_accessor.create_proxy().get_secrets(setting_name)?;
121+
122+
let requested = secrets
123+
.get(setting_name)
124+
// FIXME: Is that the right error? Does seem so, because a type was requested that
125+
// NetworkManager does not know.
126+
.ok_or(Error::UnsupportedType)?;
127+
128+
use dbus::arg::RefArg;
129+
Ok(requested
130+
.iter()
131+
.map(|(k, v)| (k.clone(), v.box_clone()))
132+
.collect())
133+
}
107134
}

0 commit comments

Comments
 (0)