forked from Elara6331/itd
		
	Update itctl to use api
This commit is contained in:
		@@ -19,15 +19,12 @@
 | 
			
		||||
package get
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net"
 | 
			
		||||
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"github.com/spf13/viper"
 | 
			
		||||
	"go.arsenm.dev/itd/internal/types"
 | 
			
		||||
	"go.arsenm.dev/itd/api"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// addressCmd represents the address command
 | 
			
		||||
@@ -36,40 +33,14 @@ var addressCmd = &cobra.Command{
 | 
			
		||||
	Aliases: []string{"addr"},
 | 
			
		||||
	Short:   "Get InfiniTime's bluetooth address",
 | 
			
		||||
	Run: func(cmd *cobra.Command, args []string) {
 | 
			
		||||
		// Connect to itd UNIX socket
 | 
			
		||||
		conn, err := net.Dial("unix", viper.GetString("sockPath"))
 | 
			
		||||
		client := viper.Get("client").(*api.Client)
 | 
			
		||||
		
 | 
			
		||||
		address, err := client.Address()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error dialing socket. Is itd running?")
 | 
			
		||||
		}
 | 
			
		||||
		defer conn.Close()
 | 
			
		||||
 | 
			
		||||
		// Encode request into connection
 | 
			
		||||
		err = json.NewEncoder(conn).Encode(types.Request{
 | 
			
		||||
			Type: types.ReqTypeBtAddress,
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error making request")
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error getting bluetooth address")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Read one line from connection
 | 
			
		||||
		line, _, err := bufio.NewReader(conn).ReadLine()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error reading line from connection")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var res types.Response
 | 
			
		||||
		// Decode line into response
 | 
			
		||||
		err = json.Unmarshal(line, &res)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error decoding JSON data")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if res.Error {
 | 
			
		||||
			log.Fatal().Msg(res.Message)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Print returned value
 | 
			
		||||
		fmt.Println(res.Value)
 | 
			
		||||
		fmt.Println(address)
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,15 +19,12 @@
 | 
			
		||||
package get
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net"
 | 
			
		||||
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"github.com/spf13/viper"
 | 
			
		||||
	"go.arsenm.dev/itd/internal/types"
 | 
			
		||||
	"go.arsenm.dev/itd/api"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// batteryCmd represents the batt command
 | 
			
		||||
@@ -36,40 +33,15 @@ var batteryCmd = &cobra.Command{
 | 
			
		||||
	Aliases: []string{"batt"},
 | 
			
		||||
	Short:   "Get battery level from InfiniTime",
 | 
			
		||||
	Run: func(cmd *cobra.Command, args []string) {
 | 
			
		||||
		// Connect to itd UNIX socket
 | 
			
		||||
		conn, err := net.Dial("unix", viper.GetString("sockPath"))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error dialing socket. Is itd running?")
 | 
			
		||||
		}
 | 
			
		||||
		defer conn.Close()
 | 
			
		||||
		client := viper.Get("client").(*api.Client)
 | 
			
		||||
 | 
			
		||||
		// Encode request into connection
 | 
			
		||||
		err = json.NewEncoder(conn).Encode(types.Request{
 | 
			
		||||
			Type: types.ReqTypeBattLevel,
 | 
			
		||||
		})
 | 
			
		||||
		battLevel, err := client.BatteryLevel()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error making request")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Read one line from connection
 | 
			
		||||
		line, _, err := bufio.NewReader(conn).ReadLine()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error reading line from connection")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var res types.Response
 | 
			
		||||
		// Deocde line into response
 | 
			
		||||
		err = json.Unmarshal(line, &res)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error decoding JSON data")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if res.Error {
 | 
			
		||||
			log.Fatal().Msg(res.Message)
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error getting battery level")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Print returned percentage
 | 
			
		||||
		fmt.Printf("%d%%\n", int(res.Value.(float64)))
 | 
			
		||||
		fmt.Printf("%d%%\n", battLevel)
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,15 +19,12 @@
 | 
			
		||||
package get
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net"
 | 
			
		||||
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"github.com/spf13/viper"
 | 
			
		||||
	"go.arsenm.dev/itd/internal/types"
 | 
			
		||||
	"go.arsenm.dev/itd/api"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// heartCmd represents the heart command
 | 
			
		||||
@@ -35,40 +32,15 @@ var heartCmd = &cobra.Command{
 | 
			
		||||
	Use:   "heart",
 | 
			
		||||
	Short: "Get heart rate from InfiniTime",
 | 
			
		||||
	Run: func(cmd *cobra.Command, args []string) {
 | 
			
		||||
		// Connect to itd UNIX socket
 | 
			
		||||
		conn, err := net.Dial("unix", viper.GetString("sockPath"))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error dialing socket. Is itd running?")
 | 
			
		||||
		}
 | 
			
		||||
		defer conn.Close()
 | 
			
		||||
		client := viper.Get("client").(*api.Client)
 | 
			
		||||
 | 
			
		||||
		// Encode request into connection
 | 
			
		||||
		err = json.NewEncoder(conn).Encode(types.Request{
 | 
			
		||||
			Type: types.ReqTypeHeartRate,
 | 
			
		||||
		})
 | 
			
		||||
		heartRate, err := client.HeartRate()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error making request")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Read one line from connection
 | 
			
		||||
		line, _, err := bufio.NewReader(conn).ReadLine()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error reading line from connection")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var res types.Response
 | 
			
		||||
		// Decode line into response
 | 
			
		||||
		err = json.Unmarshal(line, &res)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error decoding JSON data")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if res.Error {
 | 
			
		||||
			log.Fatal().Msg(res.Message)
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error getting heart rate")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Print returned BPM
 | 
			
		||||
		fmt.Printf("%d BPM\n", int(res.Value.(float64)))
 | 
			
		||||
		fmt.Printf("%d BPM\n", heartRate)
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,16 +19,12 @@
 | 
			
		||||
package get
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net"
 | 
			
		||||
 | 
			
		||||
	"github.com/mitchellh/mapstructure"
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"github.com/spf13/viper"
 | 
			
		||||
	"go.arsenm.dev/itd/internal/types"
 | 
			
		||||
	"go.arsenm.dev/itd/api"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// steps.goCmd represents the steps.go command
 | 
			
		||||
@@ -36,42 +32,11 @@ var motionCmd = &cobra.Command{
 | 
			
		||||
	Use:   "motion",
 | 
			
		||||
	Short: "Get motion values from InfiniTime",
 | 
			
		||||
	Run: func(cmd *cobra.Command, args []string) {
 | 
			
		||||
		// Connect to itd UNIX socket
 | 
			
		||||
		conn, err := net.Dial("unix", viper.GetString("sockPath"))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error dialing socket. Is itd running?")
 | 
			
		||||
		}
 | 
			
		||||
		defer conn.Close()
 | 
			
		||||
		client := viper.Get("client").(*api.Client)
 | 
			
		||||
 | 
			
		||||
		// Encode request into connection
 | 
			
		||||
		err = json.NewEncoder(conn).Encode(types.Request{
 | 
			
		||||
			Type: types.ReqTypeMotion,
 | 
			
		||||
		})
 | 
			
		||||
		motionVals, err := client.Motion()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error making request")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Read one line from connection
 | 
			
		||||
		line, _, err := bufio.NewReader(conn).ReadLine()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error reading line from connection")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var res types.Response
 | 
			
		||||
		// Decode line into response
 | 
			
		||||
		err = json.Unmarshal(line, &res)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error decoding JSON data")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var motionVals types.MotionValues
 | 
			
		||||
		err = mapstructure.Decode(res.Value, &motionVals)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error decoding motion values")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if res.Error {
 | 
			
		||||
			log.Fatal().Msg(res.Message)
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error getting motion values")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if viper.GetBool("shell") {
 | 
			
		||||
 
 | 
			
		||||
@@ -19,15 +19,12 @@
 | 
			
		||||
package get
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net"
 | 
			
		||||
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"github.com/spf13/viper"
 | 
			
		||||
	"go.arsenm.dev/itd/internal/types"
 | 
			
		||||
	"go.arsenm.dev/itd/api"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// steps.goCmd represents the steps.go command
 | 
			
		||||
@@ -35,40 +32,15 @@ var stepsCmd = &cobra.Command{
 | 
			
		||||
	Use:   "steps",
 | 
			
		||||
	Short: "Get step count from InfiniTime",
 | 
			
		||||
	Run: func(cmd *cobra.Command, args []string) {
 | 
			
		||||
		// Connect to itd UNIX socket
 | 
			
		||||
		conn, err := net.Dial("unix", viper.GetString("sockPath"))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error dialing socket. Is itd running?")
 | 
			
		||||
		}
 | 
			
		||||
		defer conn.Close()
 | 
			
		||||
		client := viper.Get("client").(*api.Client)
 | 
			
		||||
 | 
			
		||||
		// Encode request into connection
 | 
			
		||||
		err = json.NewEncoder(conn).Encode(types.Request{
 | 
			
		||||
			Type: types.ReqTypeStepCount,
 | 
			
		||||
		})
 | 
			
		||||
		stepCount, err := client.StepCount()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error making request")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Read one line from connection
 | 
			
		||||
		line, _, err := bufio.NewReader(conn).ReadLine()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error reading line from connection")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var res types.Response
 | 
			
		||||
		// Decode line into response
 | 
			
		||||
		err = json.Unmarshal(line, &res)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error decoding JSON data")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if res.Error {
 | 
			
		||||
			log.Fatal().Msg(res.Message)
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error getting step count")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Print returned BPM
 | 
			
		||||
		fmt.Printf("%d Steps\n", int(res.Value.(float64)))
 | 
			
		||||
		fmt.Printf("%d Steps\n", stepCount)
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user