2019-10-07 08:14:47 -06:00
// Copyright (c) Mainflux
2018-08-26 13:15:48 +02:00
// SPDX-License-Identifier: Apache-2.0
2018-08-16 13:41:27 +02:00
package cli
2018-07-11 13:53:37 +02:00
import (
2018-10-24 11:21:03 +02:00
"encoding/json"
mfxsdk "github.com/mainflux/mainflux/sdk/go"
2018-07-11 13:53:37 +02:00
"github.com/spf13/cobra"
)
const thingsEP = "things"
var cmdThings = [ ] cobra . Command {
cobra . Command {
Use : "create" ,
Short : "create <JSON_thing> <user_auth_token>" ,
Long : ` Create new thing, generate his UUID and store it ` ,
Run : func ( cmd * cobra . Command , args [ ] string ) {
if len ( args ) != 2 {
2018-10-14 16:44:21 +02:00
logUsage ( cmd . Short )
return
}
2018-10-24 11:21:03 +02:00
var thing mfxsdk . Thing
if err := json . Unmarshal ( [ ] byte ( args [ 0 ] ) , & thing ) ; err != nil {
logError ( err )
return
}
id , err := sdk . CreateThing ( thing , args [ 1 ] )
2018-10-14 16:44:21 +02:00
if err != nil {
logError ( err )
2018-07-11 13:53:37 +02:00
return
}
2018-10-24 11:21:03 +02:00
2018-12-16 20:01:37 +01:00
logCreated ( id )
2018-07-11 13:53:37 +02:00
} ,
} ,
cobra . Command {
Use : "get" ,
2019-02-01 23:17:09 +01:00
Short : "get [all | <thing_id>] <user_auth_token>" ,
2018-10-14 16:44:21 +02:00
Long : ` Get all things or thing by id ` ,
2018-07-11 13:53:37 +02:00
Run : func ( cmd * cobra . Command , args [ ] string ) {
if len ( args ) != 2 {
2018-10-14 16:44:21 +02:00
logUsage ( cmd . Short )
2018-07-11 13:53:37 +02:00
return
}
2018-10-24 11:21:03 +02:00
2018-07-11 13:53:37 +02:00
if args [ 0 ] == "all" {
2019-05-30 15:33:49 +02:00
l , err := sdk . Things ( args [ 1 ] , uint64 ( Offset ) , uint64 ( Limit ) , Name )
2018-10-14 16:44:21 +02:00
if err != nil {
logError ( err )
return
}
2018-12-16 20:01:37 +01:00
logJSON ( l )
2018-07-11 13:53:37 +02:00
return
}
2018-10-24 11:21:03 +02:00
2018-10-14 16:44:21 +02:00
t , err := sdk . Thing ( args [ 0 ] , args [ 1 ] )
if err != nil {
logError ( err )
return
}
2018-10-24 11:21:03 +02:00
2018-12-16 20:01:37 +01:00
logJSON ( t )
2018-07-11 13:53:37 +02:00
} ,
} ,
cobra . Command {
Use : "delete" ,
Short : "delete <thing_id> <user_auth_token>" ,
Long : ` Removes thing from database ` ,
Run : func ( cmd * cobra . Command , args [ ] string ) {
if len ( args ) != 2 {
2018-10-14 16:44:21 +02:00
logUsage ( cmd . Short )
return
}
2018-10-24 11:21:03 +02:00
2018-10-14 16:44:21 +02:00
if err := sdk . DeleteThing ( args [ 0 ] , args [ 1 ] ) ; err != nil {
logError ( err )
2018-07-11 13:53:37 +02:00
return
}
2018-10-24 11:21:03 +02:00
2018-10-14 16:44:21 +02:00
logOK ( )
2018-07-11 13:53:37 +02:00
} ,
} ,
cobra . Command {
Use : "update" ,
2018-10-24 11:21:03 +02:00
Short : "update <JSON_string> <user_auth_token>" ,
2018-07-11 13:53:37 +02:00
Long : ` Update thing record ` ,
Run : func ( cmd * cobra . Command , args [ ] string ) {
2019-02-01 23:17:09 +01:00
if len ( args ) != 2 {
2018-10-14 16:44:21 +02:00
logUsage ( cmd . Short )
2018-07-11 13:53:37 +02:00
return
}
2018-10-24 11:21:03 +02:00
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 {
2018-10-14 16:44:21 +02:00
logError ( err )
return
}
2018-10-24 11:21:03 +02:00
2018-10-14 16:44:21 +02:00
logOK ( )
2018-07-11 13:53:37 +02:00
} ,
} ,
cobra . Command {
Use : "connect" ,
Short : "connect <thing_id> <channel_id> <user_auth_token>" ,
Long : ` Connect thing to the channel ` ,
Run : func ( cmd * cobra . Command , args [ ] string ) {
if len ( args ) != 3 {
2018-10-14 16:44:21 +02:00
logUsage ( cmd . Short )
return
}
2018-10-24 11:21:03 +02:00
2018-10-14 16:44:21 +02:00
if err := sdk . ConnectThing ( args [ 0 ] , args [ 1 ] , args [ 2 ] ) ; err != nil {
logError ( err )
2018-07-11 13:53:37 +02:00
return
}
2018-10-24 11:21:03 +02:00
2018-10-14 16:44:21 +02:00
logOK ( )
2018-07-11 13:53:37 +02:00
} ,
} ,
cobra . Command {
Use : "disconnect" ,
Short : "disconnect <thing_id> <channel_id> <user_auth_token>" ,
Long : ` Disconnect thing to the channel ` ,
Run : func ( cmd * cobra . Command , args [ ] string ) {
if len ( args ) != 3 {
2018-10-14 16:44:21 +02:00
logUsage ( cmd . Short )
2018-07-11 13:53:37 +02:00
return
}
2018-10-24 11:21:03 +02:00
2018-10-14 16:44:21 +02:00
if err := sdk . DisconnectThing ( args [ 0 ] , args [ 1 ] , args [ 2 ] ) ; err != nil {
logError ( err )
return
}
2018-10-24 11:21:03 +02:00
2018-10-14 16:44:21 +02:00
logOK ( )
2018-07-11 13:53:37 +02:00
} ,
} ,
2019-01-10 21:42:31 +01:00
cobra . Command {
Use : "connections" ,
Short : "connections <thing_id> <user_auth_token>" ,
Long : ` List of Channels connected to Thing ` ,
Run : func ( cmd * cobra . Command , args [ ] string ) {
if len ( args ) != 2 {
logUsage ( cmd . Short )
return
}
cl , err := sdk . ChannelsByThing ( args [ 1 ] , args [ 0 ] , uint64 ( Offset ) , uint64 ( Limit ) )
if err != nil {
logError ( err )
return
}
logJSON ( cl )
} ,
} ,
2018-07-11 13:53:37 +02:00
}
2018-10-24 11:21:03 +02:00
// NewThingsCmd returns things command.
2018-07-11 13:53:37 +02:00
func NewThingsCmd ( ) * cobra . Command {
cmd := cobra . Command {
Use : "things" ,
2019-02-01 23:17:09 +01:00
Short : "Things management" ,
Long : ` Things management: create, get, update or delete Thing, connect or disconnect Thing from Channel and get the list of Channels connected to Thing ` ,
2018-07-11 13:53:37 +02:00
Run : func ( cmd * cobra . Command , args [ ] string ) {
2019-02-08 15:38:07 +01:00
logUsage ( "things [create | get | update | delete | connect | disconnect | connections]" )
2018-07-11 13:53:37 +02:00
} ,
}
2018-10-14 16:44:21 +02:00
for i := range cmdThings {
2018-07-11 13:53:37 +02:00
cmd . AddCommand ( & cmdThings [ i ] )
}
return & cmd
}