1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-26 13:48:53 +08:00

NOISSUE - Create func to encode SDK errors (#1110)

* NOISSUE - Create func to encode SDK errors

Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>

* Use var declaration

Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
This commit is contained in:
Manuel Imperiale 2020-04-14 11:04:33 +02:00 committed by GitHub
parent d8dca28072
commit 5b5229975b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 100 additions and 179 deletions

View File

@ -10,8 +10,6 @@ import (
"github.com/spf13/cobra"
)
const thingsEP = "things"
var cmdThings = []cobra.Command{
cobra.Command{
Use: "create",

View File

@ -32,14 +32,10 @@ func (sdk mfSDK) CreateChannel(channel Channel, token string) (string, error) {
}
if resp.StatusCode != http.StatusCreated {
switch resp.StatusCode {
case http.StatusBadRequest:
return "", ErrInvalidArgs
case http.StatusForbidden:
return "", ErrUnauthorized
default:
return "", ErrFailedCreation
if err := encodeError(resp.StatusCode); err != nil {
return "", err
}
return "", ErrFailedCreation
}
id := strings.TrimPrefix(resp.Header.Get("Location"), fmt.Sprintf("/%s/", channelsEndpoint))
@ -67,14 +63,10 @@ func (sdk mfSDK) CreateChannels(channels []Channel, token string) ([]Channel, er
defer resp.Body.Close()
if resp.StatusCode != http.StatusCreated {
switch resp.StatusCode {
case http.StatusBadRequest:
return []Channel{}, ErrInvalidArgs
case http.StatusForbidden:
return []Channel{}, ErrUnauthorized
default:
return []Channel{}, ErrFailedCreation
if err := encodeError(resp.StatusCode); err != nil {
return []Channel{}, err
}
return []Channel{}, ErrFailedCreation
}
body, err := ioutil.ReadAll(resp.Body)
@ -82,12 +74,12 @@ func (sdk mfSDK) CreateChannels(channels []Channel, token string) ([]Channel, er
return []Channel{}, err
}
var p createChannelsRes
if err := json.Unmarshal(body, &p); err != nil {
var ccr createChannelsRes
if err := json.Unmarshal(body, &ccr); err != nil {
return []Channel{}, err
}
return p.Channels, nil
return ccr.Channels, nil
}
func (sdk mfSDK) Channels(token string, offset, limit uint64, name string) (ChannelsPage, error) {
@ -111,14 +103,10 @@ func (sdk mfSDK) Channels(token string, offset, limit uint64, name string) (Chan
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusBadRequest:
return ChannelsPage{}, ErrInvalidArgs
case http.StatusForbidden:
return ChannelsPage{}, ErrUnauthorized
default:
return ChannelsPage{}, ErrFetchFailed
if err := encodeError(resp.StatusCode); err != nil {
return ChannelsPage{}, err
}
return ChannelsPage{}, ErrFetchFailed
}
var cp ChannelsPage
@ -150,14 +138,10 @@ func (sdk mfSDK) ChannelsByThing(token, thingID string, offset, limit uint64) (C
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusBadRequest:
return ChannelsPage{}, ErrInvalidArgs
case http.StatusForbidden:
return ChannelsPage{}, ErrUnauthorized
default:
return ChannelsPage{}, ErrFetchFailed
if err := encodeError(resp.StatusCode); err != nil {
return ChannelsPage{}, err
}
return ChannelsPage{}, ErrFetchFailed
}
var cp ChannelsPage
@ -189,14 +173,10 @@ func (sdk mfSDK) Channel(id, token string) (Channel, error) {
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusForbidden:
return Channel{}, ErrUnauthorized
case http.StatusNotFound:
return Channel{}, ErrNotFound
default:
return Channel{}, ErrFetchFailed
if err := encodeError(resp.StatusCode); err != nil {
return Channel{}, err
}
return Channel{}, ErrFetchFailed
}
var c Channel
@ -227,16 +207,10 @@ func (sdk mfSDK) UpdateChannel(channel Channel, token string) error {
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusBadRequest:
return ErrInvalidArgs
case http.StatusForbidden:
return ErrUnauthorized
case http.StatusNotFound:
return ErrNotFound
default:
return ErrFailedUpdate
if err := encodeError(resp.StatusCode); err != nil {
return err
}
return ErrFailedUpdate
}
return nil
@ -257,14 +231,10 @@ func (sdk mfSDK) DeleteChannel(id, token string) error {
}
if resp.StatusCode != http.StatusNoContent {
switch resp.StatusCode {
case http.StatusBadRequest:
return ErrInvalidArgs
case http.StatusForbidden:
return ErrUnauthorized
default:
return ErrFailedUpdate
if err := encodeError(resp.StatusCode); err != nil {
return err
}
return ErrFailedUpdate
}
return nil

View File

@ -34,14 +34,10 @@ func (sdk mfSDK) SendMessage(chanName, msg, token string) error {
}
if resp.StatusCode != http.StatusAccepted {
switch resp.StatusCode {
case http.StatusBadRequest:
return ErrInvalidArgs
case http.StatusForbidden:
return ErrUnauthorized
default:
return ErrFailedPublish
if err := encodeError(resp.StatusCode); err != nil {
return err
}
return ErrFailedPublish
}
return nil
@ -74,17 +70,13 @@ func (sdk mfSDK) ReadMessages(chanName, token string) (MessagesPage, error) {
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusBadRequest:
return MessagesPage{}, ErrInvalidArgs
case http.StatusForbidden:
return MessagesPage{}, ErrUnauthorized
default:
return MessagesPage{}, ErrFailedRead
if err := encodeError(resp.StatusCode); err != nil {
return MessagesPage{}, err
}
return MessagesPage{}, ErrFailedRead
}
mp := MessagesPage{}
var mp MessagesPage
if err := json.Unmarshal(body, &mp); err != nil {
return MessagesPage{}, err
}

View File

@ -240,3 +240,18 @@ func createURL(baseURL, prefix, endpoint string) string {
return fmt.Sprintf("%s/%s/%s", baseURL, prefix, endpoint)
}
func encodeError(statusCode int) error {
switch statusCode {
case http.StatusBadRequest:
return ErrInvalidArgs
case http.StatusForbidden:
return ErrUnauthorized
case http.StatusNotFound:
return ErrNotFound
case http.StatusConflict:
return ErrConflict
default:
return nil
}
}

View File

@ -35,14 +35,10 @@ func (sdk mfSDK) CreateThing(thing Thing, token string) (string, error) {
defer resp.Body.Close()
if resp.StatusCode != http.StatusCreated {
switch resp.StatusCode {
case http.StatusBadRequest:
return "", ErrInvalidArgs
case http.StatusForbidden:
return "", ErrUnauthorized
default:
return "", ErrFailedCreation
if err := encodeError(resp.StatusCode); err != nil {
return "", err
}
return "", ErrFailedCreation
}
id := strings.TrimPrefix(resp.Header.Get("Location"), fmt.Sprintf("/%s/", thingsEndpoint))
@ -70,14 +66,10 @@ func (sdk mfSDK) CreateThings(things []Thing, token string) ([]Thing, error) {
defer resp.Body.Close()
if resp.StatusCode != http.StatusCreated {
switch resp.StatusCode {
case http.StatusBadRequest:
return []Thing{}, ErrInvalidArgs
case http.StatusForbidden:
return []Thing{}, ErrUnauthorized
default:
return []Thing{}, ErrFailedCreation
if err := encodeError(resp.StatusCode); err != nil {
return []Thing{}, err
}
return []Thing{}, ErrFailedCreation
}
body, err := ioutil.ReadAll(resp.Body)
@ -85,12 +77,12 @@ func (sdk mfSDK) CreateThings(things []Thing, token string) ([]Thing, error) {
return []Thing{}, err
}
var p createThingsRes
if err := json.Unmarshal(body, &p); err != nil {
var ctr createThingsRes
if err := json.Unmarshal(body, &ctr); err != nil {
return []Thing{}, err
}
return p.Things, nil
return ctr.Things, nil
}
func (sdk mfSDK) Things(token string, offset, limit uint64, name string) (ThingsPage, error) {
@ -114,14 +106,10 @@ func (sdk mfSDK) Things(token string, offset, limit uint64, name string) (Things
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusBadRequest:
return ThingsPage{}, ErrInvalidArgs
case http.StatusForbidden:
return ThingsPage{}, ErrUnauthorized
default:
return ThingsPage{}, ErrFetchFailed
if err := encodeError(resp.StatusCode); err != nil {
return ThingsPage{}, err
}
return ThingsPage{}, ErrFetchFailed
}
var tp ThingsPage
@ -153,14 +141,10 @@ func (sdk mfSDK) ThingsByChannel(token, chanID string, offset, limit uint64) (Th
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusBadRequest:
return ThingsPage{}, ErrInvalidArgs
case http.StatusForbidden:
return ThingsPage{}, ErrUnauthorized
default:
return ThingsPage{}, ErrFetchFailed
if err := encodeError(resp.StatusCode); err != nil {
return ThingsPage{}, err
}
return ThingsPage{}, ErrFetchFailed
}
var tp ThingsPage
@ -192,14 +176,10 @@ func (sdk mfSDK) Thing(id, token string) (Thing, error) {
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusForbidden:
return Thing{}, ErrUnauthorized
case http.StatusNotFound:
return Thing{}, ErrNotFound
default:
return Thing{}, ErrFetchFailed
if err := encodeError(resp.StatusCode); err != nil {
return Thing{}, err
}
return Thing{}, ErrFetchFailed
}
var t Thing
@ -230,16 +210,10 @@ func (sdk mfSDK) UpdateThing(thing Thing, token string) error {
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusBadRequest:
return ErrInvalidArgs
case http.StatusForbidden:
return ErrUnauthorized
case http.StatusNotFound:
return ErrNotFound
default:
return ErrFailedUpdate
if err := encodeError(resp.StatusCode); err != nil {
return err
}
return ErrFailedUpdate
}
return nil
@ -260,14 +234,10 @@ func (sdk mfSDK) DeleteThing(id, token string) error {
}
if resp.StatusCode != http.StatusNoContent {
switch resp.StatusCode {
case http.StatusForbidden:
return ErrUnauthorized
case http.StatusBadRequest:
return ErrInvalidArgs
default:
return ErrFailedRemoval
if err := encodeError(resp.StatusCode); err != nil {
return err
}
return ErrFailedRemoval
}
return nil
@ -291,14 +261,10 @@ func (sdk mfSDK) Connect(connIDs ConnectionIDs, token string) error {
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusForbidden:
return ErrUnauthorized
case http.StatusNotFound:
return ErrNotFound
default:
return ErrFailedConnection
if err := encodeError(resp.StatusCode); err != nil {
return err
}
return ErrFailedConnection
}
return nil
@ -319,14 +285,10 @@ func (sdk mfSDK) DisconnectThing(thingID, chanID, token string) error {
}
if resp.StatusCode != http.StatusNoContent {
switch resp.StatusCode {
case http.StatusForbidden:
return ErrUnauthorized
case http.StatusNotFound:
return ErrNotFound
default:
return ErrFailedDisconnect
if err := encodeError(resp.StatusCode); err != nil {
return err
}
return ErrFailedDisconnect
}
return nil

View File

@ -665,14 +665,14 @@ func TestConnectThing(t *testing.T) {
thingID: thingID,
chanID: "",
token: token,
err: sdk.ErrFailedConnection,
err: sdk.ErrInvalidArgs,
},
{
desc: "connect thing with invalid ID to existing channel",
thingID: "",
chanID: chanID1,
token: token,
err: sdk.ErrFailedConnection,
err: sdk.ErrInvalidArgs,
},
{
@ -769,14 +769,14 @@ func TestConnect(t *testing.T) {
thingID: thingID,
chanID: emptyValue,
token: token,
err: sdk.ErrFailedConnection,
err: sdk.ErrInvalidArgs,
},
{
desc: "connect things with invalid ID to existing channels",
thingID: emptyValue,
chanID: chanID1,
token: token,
err: sdk.ErrFailedConnection,
err: sdk.ErrInvalidArgs,
},
{
@ -881,14 +881,14 @@ func TestDisconnectThing(t *testing.T) {
thingID: thingID,
chanID: "",
token: token,
err: sdk.ErrFailedDisconnect,
err: sdk.ErrInvalidArgs,
},
{
desc: "disconnect thing with invalid ID from existing channel",
thingID: "",
chanID: chanID1,
token: token,
err: sdk.ErrFailedDisconnect,
err: sdk.ErrInvalidArgs,
},
{
desc: "disconnect existing thing from existing channel with invalid token",

View File

@ -28,14 +28,10 @@ func (sdk mfSDK) CreateUser(user User) error {
}
if resp.StatusCode != http.StatusCreated {
switch resp.StatusCode {
case http.StatusBadRequest:
return ErrInvalidArgs
case http.StatusConflict:
return ErrConflict
default:
return ErrFailedCreation
if err := encodeError(resp.StatusCode); err != nil {
return err
}
return ErrFailedCreation
}
return nil
@ -61,12 +57,10 @@ func (sdk mfSDK) User(token string) (User, error) {
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusForbidden:
return User{}, ErrUnauthorized
default:
return User{}, ErrFetchFailed
if err := encodeError(resp.StatusCode); err != nil {
return User{}, err
}
return User{}, ErrFetchFailed
}
var u User
@ -97,22 +91,18 @@ func (sdk mfSDK) CreateToken(user User) (string, error) {
}
if resp.StatusCode != http.StatusCreated {
switch resp.StatusCode {
case http.StatusBadRequest:
return "", ErrInvalidArgs
case http.StatusForbidden:
return "", ErrUnauthorized
default:
return "", ErrFailedCreation
if err := encodeError(resp.StatusCode); err != nil {
return "", err
}
return "", ErrFailedCreation
}
var t tokenRes
if err := json.Unmarshal(body, &t); err != nil {
var tr tokenRes
if err := json.Unmarshal(body, &tr); err != nil {
return "", err
}
return t.Token, nil
return tr.Token, nil
}
func (sdk mfSDK) UpdateUser(user User, token string) error {
@ -134,12 +124,10 @@ func (sdk mfSDK) UpdateUser(user User, token string) error {
}
if resp.StatusCode != http.StatusOK {
switch resp.StatusCode {
case http.StatusForbidden:
return ErrUnauthorized
default:
return ErrFailedUpdate
if err := encodeError(resp.StatusCode); err != nil {
return err
}
return ErrFailedUpdate
}
return nil
@ -168,14 +156,10 @@ func (sdk mfSDK) UpdatePassword(oldPass, newPass, token string) error {
}
if resp.StatusCode != http.StatusCreated {
switch resp.StatusCode {
case http.StatusBadRequest:
return ErrInvalidArgs
case http.StatusForbidden:
return ErrUnauthorized
default:
return ErrFailedUpdate
if err := encodeError(resp.StatusCode); err != nil {
return err
}
return ErrFailedUpdate
}
return nil