Skip to content

Commit

Permalink
NOISSUE - Refactor SDK and things service (#420)
Browse files Browse the repository at this point in the history
* Refactor Mainflux go SDK

Add structures instead of string parameters. Add offset and limit
parameters to things and channels methods. Add better configuration
support.

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Add new public errors with better error handling

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Update SDK to use uint instread of string id

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Update cli to use new SDK API

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Remove TLS termination from nginx configuration

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Update SDK documentation and structures

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Refactor things service

Decouple HTTP layer from business logic. Remove ID number validation
check. Remove models from HTTP requests and responses.

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Reformat tests for things service

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>

* Increase test coverage for things service

Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
  • Loading branch information
anovakovic01 authored and drasko committed Oct 24, 2018
1 parent d89e911 commit ad5c66f
Show file tree
Hide file tree
Showing 43 changed files with 2,154 additions and 778 deletions.
40 changes: 33 additions & 7 deletions cli/channels.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
package cli

import (
"encoding/json"

mfxsdk "github.com/mainflux/mainflux/sdk/go"
"github.com/spf13/cobra"
)

Expand All @@ -21,12 +24,20 @@ var cmdChannels = []cobra.Command{
logUsage(cmd.Short)
return
}
id, err := sdk.CreateChannel(args[0], args[1])

var channel mfxsdk.Channel
if err := json.Unmarshal([]byte(args[0]), &channel); err != nil {
logError(err)
return
}

id, err := sdk.CreateChannel(channel, args[1])
if err != nil {
logError(err)
return
}
dump(id)

flush(id)
},
},
cobra.Command{
Expand All @@ -38,36 +49,48 @@ var cmdChannels = []cobra.Command{
logUsage(cmd.Short)
return
}

if args[0] == "all" {
l, err := sdk.Channels(args[1])
l, err := sdk.Channels(args[1], uint64(Offset), uint64(Limit))
if err != nil {
logError(err)
return
}
dump(l)

flush(l)
return
}

c, err := sdk.Channel(args[0], args[1])
if err != nil {
logError(err)
return
}
dump(c)

flush(c)
},
},
cobra.Command{
Use: "update",
Short: "update <channel_id> <JSON_string> <user_auth_token>",
Short: "update <JSON_string> <user_auth_token>",
Long: `Updates channel record`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 3 {
logUsage(cmd.Short)
return
}
if err := sdk.UpdateChannel(args[0], args[1], args[2]); err != nil {

var channel mfxsdk.Channel
if err := json.Unmarshal([]byte(args[0]), &channel); err != nil {
logError(err)
return
}

if err := sdk.UpdateChannel(channel, args[1]); err != nil {
logError(err)
return
}

logOK()
},
},
Expand All @@ -80,15 +103,18 @@ var cmdChannels = []cobra.Command{
logUsage(cmd.Short)
return
}

if err := sdk.DeleteChannel(args[0], args[1]); err != nil {
logError(err)
return
}

logOK()
},
},
}

// NewChannelsCmd returns channels command.
func NewChannelsCmd() *cobra.Command {
cmd := cobra.Command{
Use: "channels",
Expand Down
7 changes: 4 additions & 3 deletions cli/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@

package cli

import (
"github.com/spf13/cobra"
)
import "github.com/spf13/cobra"

const contentTypeSenml = "application/senml+json"

Expand All @@ -23,15 +21,18 @@ var cmdMessages = []cobra.Command{
logUsage(cmd.Short)
return
}

if err := sdk.SendMessage(args[0], args[1], args[2]); err != nil {
logError(err)
return
}

logOK()
},
},
}

// NewMessagesCmd returns messages command.
func NewMessagesCmd() *cobra.Command {
cmd := cobra.Command{
Use: "msg",
Expand Down
9 changes: 4 additions & 5 deletions cli/sdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,12 @@

package cli

import (
mfxsdk "github.com/mainflux/mainflux/sdk/go"
)
import mfxsdk "github.com/mainflux/mainflux/sdk/go"

// Keep SDK handle in global var
var sdk *mfxsdk.MfxSDK
var sdk mfxsdk.SDK

func SetSDK(s *mfxsdk.MfxSDK) {
// SetSDK sets mainflux SDK instance.
func SetSDK(s mfxsdk.SDK) {
sdk = s
}
43 changes: 36 additions & 7 deletions cli/things.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
package cli

import (
"encoding/json"

mfxsdk "github.com/mainflux/mainflux/sdk/go"
"github.com/spf13/cobra"
)

Expand All @@ -23,12 +26,20 @@ var cmdThings = []cobra.Command{
logUsage(cmd.Short)
return
}
id, err := sdk.CreateThing(args[0], args[1])

var thing mfxsdk.Thing
if err := json.Unmarshal([]byte(args[0]), &thing); err != nil {
logError(err)
return
}

id, err := sdk.CreateThing(thing, args[1])
if err != nil {
logError(err)
return
}
dump(id)

flush(id)
},
},
cobra.Command{
Expand All @@ -40,21 +51,24 @@ var cmdThings = []cobra.Command{
logUsage(cmd.Short)
return
}

if args[0] == "all" {
l, err := sdk.Things(args[1])
l, err := sdk.Things(args[1], uint64(Offset), uint64(Limit))
if err != nil {
logError(err)
return
}
dump(l)
flush(l)
return
}

t, err := sdk.Thing(args[0], args[1])
if err != nil {
logError(err)
return
}
dump(t)

flush(t)
},
},
cobra.Command{
Expand All @@ -66,26 +80,36 @@ var cmdThings = []cobra.Command{
logUsage(cmd.Short)
return
}

if err := sdk.DeleteThing(args[0], args[1]); err != nil {
logError(err)
return
}

logOK()
},
},
cobra.Command{
Use: "update",
Short: "update <thing_id> <JSON_string> <user_auth_token>",
Short: "update <JSON_string> <user_auth_token>",
Long: `Update thing record`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 3 {
logUsage(cmd.Short)
return
}
if err := sdk.UpdateThing(args[0], args[1], args[2]); err != nil {

var thing mfxsdk.Thing
if err := json.Unmarshal([]byte(args[0]), &thing); err != nil {
logError(err)
return
}

if err := sdk.UpdateThing(thing, args[1]); err != nil {
logError(err)
return
}

logOK()
},
},
Expand All @@ -98,10 +122,12 @@ var cmdThings = []cobra.Command{
logUsage(cmd.Short)
return
}

if err := sdk.ConnectThing(args[0], args[1], args[2]); err != nil {
logError(err)
return
}

logOK()
},
},
Expand All @@ -114,15 +140,18 @@ var cmdThings = []cobra.Command{
logUsage(cmd.Short)
return
}

if err := sdk.DisconnectThing(args[0], args[1], args[2]); err != nil {
logError(err)
return
}

logOK()
},
},
}

// NewThingsCmd returns things command.
func NewThingsCmd() *cobra.Command {
cmd := cobra.Command{
Use: "things",
Expand Down
20 changes: 17 additions & 3 deletions cli/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
package cli

import (
mfxsdk "github.com/mainflux/mainflux/sdk/go"
"github.com/spf13/cobra"
)

Expand All @@ -21,10 +22,16 @@ var cmdUsers = []cobra.Command{
logUsage(cmd.Short)
return
}
if err := sdk.CreateUser(args[0], args[1]); err != nil {

user := mfxsdk.User{
Email: args[0],
Password: args[1],
}
if err := sdk.CreateUser(user); err != nil {
logError(err)
return
}

logOK()
},
},
Expand All @@ -37,16 +44,23 @@ var cmdUsers = []cobra.Command{
logUsage(cmd.Short)
return
}
token, err := sdk.CreateToken(args[0], args[1])

user := mfxsdk.User{
Email: args[0],
Password: args[1],
}
token, err := sdk.CreateToken(user)
if err != nil {
logError(err)
return
}
dump(token)

flush(token)
},
},
}

// NewUsersCmd returns users command.
func NewUsersCmd() *cobra.Command {
cmd := cobra.Command{
Use: "users",
Expand Down
2 changes: 1 addition & 1 deletion cli/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ var (
Offset uint
)

func dump(i interface{}) {
func flush(i interface{}) {
fmt.Printf("%s", color.BlueString(spew.Sdump(i)))
}

Expand Down
8 changes: 4 additions & 4 deletions cli/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@

package cli

import (
"github.com/spf13/cobra"
)
import "github.com/spf13/cobra"

// NewVersionCmd returns version command.
func NewVersionCmd() *cobra.Command {
return &cobra.Command{
Use: "version",
Expand All @@ -22,7 +21,8 @@ func NewVersionCmd() *cobra.Command {
logError(err)
return
}
dump(v)

flush(v)
},
}
}
Loading

0 comments on commit ad5c66f

Please sign in to comment.