Fix: Connection settings route and address data types
This commit is contained in:
parent
8fe336a60b
commit
58824d8cc3
2 changed files with 37 additions and 30 deletions
|
@ -125,32 +125,39 @@ func decodeSettings(input map[string]map[string]dbus.Variant) (settings Connecti
|
|||
func decode(input interface{}) (value interface{}) {
|
||||
if variant, isVariant := input.(dbus.Variant); isVariant {
|
||||
return decode(variant.Value())
|
||||
} else if inputMap, isMap := input.(map[string]dbus.Variant); isMap {
|
||||
return decodeMap(inputMap)
|
||||
} else if inputArray, isArray := input.([]dbus.Variant); isArray {
|
||||
return decodeArray(inputArray)
|
||||
} else if inputArray, isArray := input.([]map[string]dbus.Variant); isArray {
|
||||
return decodeMapArray(inputArray)
|
||||
} else {
|
||||
|
||||
if inputMap, isMap := input.(map[string]dbus.Variant); isMap {
|
||||
valueMap := map[string]interface{}{}
|
||||
for key, data := range inputMap {
|
||||
valueMap[key] = decode(data)
|
||||
}
|
||||
return valueMap
|
||||
} else if inputArray, isArray := input.([]interface{}); isArray {
|
||||
var valueArray []interface{}
|
||||
for _, data := range inputArray {
|
||||
valueArray = append(valueArray, decode(data))
|
||||
}
|
||||
return valueArray
|
||||
} else if inputArray, isArray := input.([]map[string]dbus.Variant); isArray {
|
||||
var valueArray []interface{}
|
||||
for _, data := range inputArray {
|
||||
valueArray = append(valueArray, decode(data))
|
||||
}
|
||||
return valueArray
|
||||
} else {
|
||||
return input
|
||||
}
|
||||
return input
|
||||
}
|
||||
}
|
||||
|
||||
func decodeArray(input []dbus.Variant) (value []interface{}) {
|
||||
for _, data := range input {
|
||||
value = append(value, decode(data))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func decodeMapArray(input []map[string]dbus.Variant) (value []map[string]interface{}) {
|
||||
for _, data := range input {
|
||||
value = append(value, decodeMap(data))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func decodeMap(input map[string]dbus.Variant) (value map[string]interface{}) {
|
||||
value = map[string]interface{}{}
|
||||
for key, data := range input {
|
||||
value[key] = decode(data)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (c *connection) ClearSecrets() error {
|
||||
return c.call(ConnectionClearSecrets)
|
||||
}
|
||||
|
|
|
@ -63,15 +63,15 @@ func TestDecodeSettings(t *testing.T) {
|
|||
|
||||
expected := ConnectionSettings{
|
||||
"ipv4": {
|
||||
"address-data": []interface{}{
|
||||
map[string]interface{}{
|
||||
"address-data": []map[string]interface{}{
|
||||
{
|
||||
"address": "192.168.1.156",
|
||||
"prefix": 24,
|
||||
},
|
||||
},
|
||||
"dns-search": []string{},
|
||||
"method": "manual",
|
||||
"route-data": []interface{}(nil),
|
||||
"route-data": []map[string]interface{}(nil),
|
||||
"routes": [][]uint32{},
|
||||
"addresses": [][]uint32{
|
||||
{
|
||||
|
@ -86,11 +86,11 @@ func TestDecodeSettings(t *testing.T) {
|
|||
},
|
||||
"ipv6": {
|
||||
"addr-gen-mode": 3,
|
||||
"address-data": []interface{}(nil),
|
||||
"address-data": []map[string]interface{}(nil),
|
||||
"routes": [][]interface{}{},
|
||||
"dns-search": []string{},
|
||||
"method": "auto",
|
||||
"route-data": []interface{}(nil),
|
||||
"route-data": []map[string]interface{}(nil),
|
||||
"dhcp-timeout": 45,
|
||||
"route-metric": 100,
|
||||
"addresses": [][]interface{}{},
|
||||
|
@ -145,15 +145,15 @@ func TestDecode(t *testing.T) {
|
|||
result := decode(ipSettings)
|
||||
|
||||
expected := map[string]interface{}{
|
||||
"address-data": []interface{}{
|
||||
map[string]interface{}{
|
||||
"address-data": []map[string]interface{}{
|
||||
{
|
||||
"address": "192.168.1.156",
|
||||
"prefix": 24,
|
||||
},
|
||||
},
|
||||
"dns-search": []string{},
|
||||
"method": "manual",
|
||||
"route-data": []interface{}(nil),
|
||||
"route-data": []map[string]interface{}(nil),
|
||||
"routes": [][]uint32{},
|
||||
"addresses": [][]uint32{
|
||||
{
|
||||
|
|
Reference in a new issue