1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-29 13:49:28 +08:00
Mainflux.mainflux/sdk/go/message.go
Dušan Borovčanin 3f3b42b511 MF-519 - Refine Message (#567)
* Enable Message JSON mashaling/unmarshaling

Update Protobuf generated files.

Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>

* Update readers and SDK to use Mainflux Message

Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>

* Fix alignment

Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
2019-02-06 13:57:12 +01:00

95 lines
1.8 KiB
Go

//
// Copyright (c) 2018
// Mainflux
//
// SPDX-License-Identifier: Apache-2.0
//
package sdk
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"strings"
"github.com/mainflux/mainflux"
)
func (sdk mfSDK) SendMessage(chanID, msg, token string) error {
endpoint := fmt.Sprintf("channels/%s/messages", chanID)
url := createURL(sdk.baseURL, sdk.httpAdapterPrefix, endpoint)
req, err := http.NewRequest(http.MethodPost, url, strings.NewReader(msg))
if err != nil {
return err
}
resp, err := sdk.sendRequest(req, token, string(sdk.msgContentType))
if err != nil {
return err
}
if resp.StatusCode != http.StatusAccepted {
switch resp.StatusCode {
case http.StatusBadRequest:
return ErrInvalidArgs
case http.StatusForbidden:
return ErrUnauthorized
default:
return ErrFailedPublish
}
}
return nil
}
func (sdk mfSDK) ReadMessages(chanID, token string) ([]mainflux.Message, error) {
endpoint := fmt.Sprintf("channels/%s/messages", chanID)
url := createURL(sdk.readerURL, "", endpoint)
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return nil, err
}
resp, err := sdk.sendRequest(req, token, string(sdk.msgContentType))
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusBadRequest:
return nil, ErrInvalidArgs
case http.StatusForbidden:
return nil, ErrUnauthorized
default:
return nil, ErrFailedRead
}
}
var l listMessagesRes
if err := json.Unmarshal(body, &l); err != nil {
return nil, err
}
return l.Messages, nil
}
func (sdk *mfSDK) SetContentType(ct ContentType) error {
if ct != CTJSON && ct != CTJSONSenML && ct != CTBinary {
return ErrInvalidContentType
}
sdk.msgContentType = ct
return nil
}