From a60a5c1ba1b9c39c96fefd7734c62332e5e94b1f Mon Sep 17 00:00:00 2001 From: Manuel Imperiale Date: Fri, 22 Feb 2019 15:30:37 +0100 Subject: [PATCH] NOISSUE - Fix lora-adapter Object decode (#610) Signed-off-by: Manuel Imperiale --- lora/message.go | 24 ++++++++++++------------ lora/service.go | 9 +++++++-- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lora/message.go b/lora/message.go index 57ed107f..0555bcac 100644 --- a/lora/message.go +++ b/lora/message.go @@ -29,16 +29,16 @@ type TxInfo struct { // Message lora msg (www.loraserver.io/lora-app-server/integrate/data/) type Message struct { - ApplicationID string `json:"applicationID"` - ApplicationName string `json:"applicationName"` - DeviceName string `json:"deviceName"` - DevEUI string `json:"devEUI"` - DeviceStatusBattery string `json:"deviceStatusBattery"` - DeviceStatusMrgin string `json:"deviceStatusMargin"` - RxInfo RxInfo `json:"rxInfo"` - TxInfo TxInfo `json:"txInfo"` - FCnt int `json:"fCnt"` - FPort int `json:"fPort"` - Data string `json:"data"` - Object string `json:"object"` + ApplicationID string `json:"applicationID"` + ApplicationName string `json:"applicationName"` + DeviceName string `json:"deviceName"` + DevEUI string `json:"devEUI"` + DeviceStatusBattery string `json:"deviceStatusBattery"` + DeviceStatusMrgin string `json:"deviceStatusMargin"` + RxInfo RxInfo `json:"rxInfo"` + TxInfo TxInfo `json:"txInfo"` + FCnt int `json:"fCnt"` + FPort int `json:"fPort"` + Data string `json:"data"` + Object interface{} `json:"object"` } diff --git a/lora/service.go b/lora/service.go index 2801f36d..bb515677 100644 --- a/lora/service.go +++ b/lora/service.go @@ -2,6 +2,7 @@ package lora import ( "encoding/base64" + "encoding/json" "errors" "github.com/mainflux/mainflux" @@ -88,13 +89,17 @@ func (as *adapterService) Publish(m Message) error { // field Object isn't empty. Otherwise, decode standard field Data. var payload []byte switch m.Object { - case "": + case nil: payload, err = base64.StdEncoding.DecodeString(m.Data) if err != nil { return ErrMalformedMessage } default: - payload = []byte(m.Object) + jo, err := json.Marshal(m.Object) + if err != nil { + return err + } + payload = []byte(jo) } // Publish on Mainflux NATS broker