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

168 lines
4.0 KiB
Go
Raw Normal View History

//
// Copyright (c) 2018
// Mainflux
//
// SPDX-License-Identifier: Apache-2.0
//
package cli
MF-216 - Integrate Bashflux into monorepo (#308) * MF-216 - Integrate Bashflux into monorepo Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rename clients -> things Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix FormatResLog Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Initialize Channels commands in channels.go Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Mv bashflux to cmd/ repertory Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Mv API commands files to bashflux repertory Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Initialize Users commands in users.go Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Initialize Version command in version.go Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Initialize Messages command in messages.go Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rm bashflux .gitignore and mv commands to root .gitignore Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rename API commands vars Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix certificates paths Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rm test logs Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Remove get channels cmd without arguments Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix connect and disconnect commands Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix messages endpoint Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rm useless comments and dead code Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Use contentTypeSenml var Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rename cmdCobra -> cmd Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rm else statments Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rename SetServerAddr function vars Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rename conf parameters Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rename main with proper name Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix Update channel comment Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix README Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rm .DS_Store from .gitignore Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rename hhtp_client.go -> http.go Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rm DeleteAllChannels and DeleteAllThings funcs Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix BF users usage log Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Improve bashflux logs Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Share types in funcs Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Typo fix Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix BF version cmd Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Set certs paths via env variables Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix package Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rm not direct dependencies from Gopkg.toml Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix README Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Add def prefix to certificates paths Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * User thiings service for version cmd Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rename GetReqResp -> SendRequest Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix version help Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Return directly the pointer in NewVersionCmd Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Define endpoints names as consts and be consistent with naming Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Use Spintf for string concatenation Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * typo fix Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix README Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix version endpoint Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix serverAddr Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
2018-07-11 13:53:37 +02:00
import (
"fmt"
"net/http"
"strconv"
"strings"
"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 {
LogUsage(cmd.Short)
return
}
CreateThing(args[0], args[1])
},
},
cobra.Command{
Use: "get",
Short: "get all/<thing_id> <user_auth_token>",
Long: `Get all thingss or thing by id`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 2 {
LogUsage(cmd.Short)
return
}
if args[0] == "all" {
GetThings(args[1])
return
}
GetThing(args[0], args[1])
},
},
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 {
LogUsage(cmd.Short)
return
}
DeleteThing(args[0], args[1])
},
},
cobra.Command{
Use: "update",
Short: "update <thing_id> <JSON_string> <user_auth_token>",
Long: `Update thing record`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 3 {
LogUsage(cmd.Short)
return
}
UpdateThing(args[0], args[1], args[2])
},
},
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 {
LogUsage(cmd.Short)
return
}
ConnectThing(args[0], args[1], args[2])
},
},
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 {
LogUsage(cmd.Short)
return
}
DisconnectThing(args[0], args[1], args[2])
},
},
}
func NewThingsCmd() *cobra.Command {
cmd := cobra.Command{
Use: "things",
Short: "things <options>",
Long: `Things handling: create, delete or update things.`,
Run: func(cmd *cobra.Command, args []string) {
LogUsage(cmd.Short)
},
}
for i, _ := range cmdThings {
cmd.AddCommand(&cmdThings[i])
}
return &cmd
}
// CreateThing - creates new thing and generates thing UUID
func CreateThing(data, token string) {
url := fmt.Sprintf("%s/%s", serverAddr, thingsEP)
req, err := http.NewRequest("POST", url, strings.NewReader(data))
SendRequest(req, token, err)
}
// GetThings - gets all things
func GetThings(token string) {
url := fmt.Sprintf("%s/%s?offset=%s&limit=%s",
serverAddr, thingsEP, strconv.Itoa(Offset), strconv.Itoa(Limit))
req, err := http.NewRequest("GET", url, nil)
SendRequest(req, token, err)
}
// GetThing - gets thing by ID
func GetThing(id, token string) {
url := fmt.Sprintf("%s/%s/%s", serverAddr, thingsEP, id)
req, err := http.NewRequest("GET", url, nil)
SendRequest(req, token, err)
}
// UpdateThing - updates thing by ID
func UpdateThing(id, data, token string) {
url := fmt.Sprintf("%s/%s/%s", serverAddr, thingsEP, id)
req, err := http.NewRequest("PUT", url, strings.NewReader(data))
SendRequest(req, token, err)
}
// DeleteThing - removes thing
func DeleteThing(id, token string) {
url := fmt.Sprintf("%s/%s/%s", serverAddr, thingsEP, id)
req, err := http.NewRequest("DELETE", url, nil)
SendRequest(req, token, err)
}
// ConnectThing - connect thing to a channel
func ConnectThing(cliId, chanId, token string) {
url := fmt.Sprintf("%s/%s/%s/%s/%s", serverAddr, channelsEP,
chanId, thingsEP, cliId)
req, err := http.NewRequest("PUT", url, nil)
SendRequest(req, token, err)
}
// DisconnectThing - connect thing to a channel
func DisconnectThing(cliId, chanId, token string) {
url := fmt.Sprintf("%s/%s/%s/%s/%s", serverAddr, channelsEP,
chanId, thingsEP, cliId)
req, err := http.NewRequest("DELETE", url, nil)
SendRequest(req, token, err)
}