Skip to content

Commit f90fef4

Browse files
Bernhard Kaindligo95862
authored andcommitted
SSID: Make JSON-serializable(str) and convert from str
Make wireless.ssid JSON-serializable (string) and when byte arrays such as wireless.ssid are passed as strings, convert them back into a bytearray for further processing by NM.
1 parent bdda2cf commit f90fef4

File tree

1 file changed

+9
-2
lines changed
  • sdbus_async/networkmanager/settings

1 file changed

+9
-2
lines changed

sdbus_async/networkmanager/settings/base.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,11 @@ def to_settings_dict(self, defaults: bool = False) -> Dict[str, Any]:
5656
continue
5757
if not defaults and value == x.default:
5858
continue
59-
if x.metadata['dbus_type'] == 'aa{sv}':
59+
dbus_type = x.metadata['dbus_type']
60+
if dbus_type == 'aa{sv}':
6061
value = [x.to_settings_dict(defaults) for x in value]
62+
elif dbus_type == 'ay' and x.name == "ssid":
63+
value = value.decode('utf8') # Make SSID JSON-serializable
6164
new_dict[x.metadata['dbus_name']] = value
6265
return new_dict
6366

@@ -91,9 +94,13 @@ def from_dict(cls,
9194
dbus_name = dataclass_field.metadata["dbus_name"]
9295
if dbus_name in plain_dict:
9396
value = plain_dict[dbus_name]
94-
if dataclass_field.metadata["dbus_type"] == 'aa{sv}':
97+
dbus_type = dataclass_field.metadata['dbus_type']
98+
if dbus_type == 'aa{sv}':
9599
inner_class = cls.setting_name_to_inner_class(dbus_name)
96100
value = [inner_class.from_dict(item) for item in value]
101+
elif dbus_type == 'ay' and isinstance(value, str):
102+
# If byte array(e.g. ssid) was passed as string encode it:
103+
value = value.encode('utf8')
97104
options[dataclass_field.name] = value
98105
return cls(**options)
99106

0 commit comments

Comments
 (0)