[MqttValue] Return json content as default value

This commit is contained in:
Cyrille Nofficial 2019-12-27 14:47:55 +01:00
parent 4932ffbf31
commit 33511a015a
2 changed files with 10 additions and 5 deletions

View File

@ -1,6 +1,7 @@
package mqttdevice
import (
"encoding/json"
"fmt"
"github.com/cyrilix/robocar-base/types"
MQTT "github.com/eclipse/paho.mqtt.golang"
@ -107,8 +108,12 @@ func NewMqttValue(v interface{}) MqttValue {
case MqttValue:
return val
default:
log.Printf("invalid mqtt value: %v", val)
return nil
jsonValue, err := json.Marshal(v)
if err != nil {
log.Printf("unable to mashall to json value '%v': %v", v, err)
return nil
}
return jsonValue
}
}

View File

@ -66,14 +66,14 @@ func TestNewMqttValue(t *testing.T) {
{[]byte("test bytes"), []byte("test bytes")},
{struct {
content string
}{"invalid"}, nil},
Content string
}{"other"}, []byte(`{"Content":"other"}`)},
}
for _, c := range cases {
val := NewMqttValue(c.value)
if string(val) != string(c.expected) {
t.Errorf("NewMqttValue(%v): %v, wants %v", c.value, val, c.expected)
t.Errorf("NewMqttValue(%v): %v, wants %v", c.value, string(val), string(c.expected))
}
}
}