This commit is contained in:
Sam Lewis
2023-12-29 21:30:44 -05:00
11 changed files with 189 additions and 42 deletions

View File

@@ -2,7 +2,7 @@ package internal
import (
"fmt"
"log"
"log/slog"
"reflect"
"runtime"
"time"
@@ -27,7 +27,9 @@ func GetId() int64 {
func ParseTime(s string) carbon.Carbon {
t, err := time.Parse("15:04", s)
if err != nil {
log.Fatalf("Failed to parse time string \"%s\"; format must be HH:MM.\n", s)
parsingErr := fmt.Errorf("failed to parse time string \"%s\"; format must be HH:MM.: %w", s, err)
slog.Error(parsingErr.Error())
panic(parsingErr)
}
return carbon.Now().SetTimeMilli(t.Hour(), t.Minute(), 0, 0)
}
@@ -35,7 +37,9 @@ func ParseTime(s string) carbon.Carbon {
func ParseDuration(s string) time.Duration {
d, err := time.ParseDuration(s)
if err != nil {
log.Fatalf(fmt.Sprintf("Couldn't parse string duration: \"%s\" see https://pkg.go.dev/time#ParseDuration for valid time units\n", s))
parsingErr := fmt.Errorf("couldn't parse string duration: \"%s\" see https://pkg.go.dev/time#ParseDuration for valid time units: %w", s, err)
slog.Error(parsingErr.Error())
panic(parsingErr)
}
return d
}

View File

@@ -3,8 +3,7 @@ package websocket
import (
"context"
"encoding/json"
"fmt"
"log"
"log/slog"
"github.com/gorilla/websocket"
)
@@ -25,9 +24,8 @@ type ChanMsg struct {
func ListenWebsocket(conn *websocket.Conn, ctx context.Context, c chan ChanMsg) {
for {
bytes, err := ReadMessage(conn, ctx)
if err != nil {
log.Default().Println("Error reading from websocket:", err)
slog.Error("Error reading from websocket:", err)
close(c)
break
}
@@ -38,7 +36,7 @@ func ListenWebsocket(conn *websocket.Conn, ctx context.Context, c chan ChanMsg)
}
json.Unmarshal(bytes, &base)
if !base.Success {
fmt.Println("WARNING: received unsuccessful response:", string(bytes))
slog.Warn("Received unsuccessful response", "response", string(bytes))
}
chanMsg := ChanMsg{
Type: base.Type,

View File

@@ -9,7 +9,7 @@ import (
"encoding/json"
"errors"
"fmt"
"log"
"log/slog"
"sync"
"time"
@@ -17,9 +17,7 @@ import (
i "saml.dev/gome-assistant/internal"
)
var (
ErrInvalidToken = errors.New("invalid authentication token")
)
var ErrInvalidToken = errors.New("invalid authentication token")
type AuthMessage struct {
MsgType string `json:"type"`
@@ -59,7 +57,7 @@ func SetupConnection(ip, port, authToken string) (*websocket.Conn, context.Conte
conn, _, err := dialer.DialContext(ctx, fmt.Sprintf("ws://%s:%s/api/websocket", ip, port), nil)
if err != nil {
ctxCancel()
log.Printf("ERROR: Failed to connect to websocket at ws://%s:%s/api/websocket. Check IP address and port\n", ip, port)
slog.Error("Failed to connect to websocket at ws://%s:%s/api/websocket. Check IP address and port\n", ip, port)
return nil, nil, nil, err
}
@@ -67,7 +65,7 @@ func SetupConnection(ip, port, authToken string) (*websocket.Conn, context.Conte
_, err = ReadMessage(conn, ctx)
if err != nil {
ctxCancel()
log.Printf("Unknown error creating websocket client\n")
slog.Error("Unknown error creating websocket client\n")
return nil, nil, nil, err
}
@@ -75,7 +73,7 @@ func SetupConnection(ip, port, authToken string) (*websocket.Conn, context.Conte
err = SendAuthMessage(conn, ctx, authToken)
if err != nil {
ctxCancel()
log.Printf("Unknown error creating websocket client\n")
slog.Error("Unknown error creating websocket client\n")
return nil, nil, nil, err
}
@@ -83,7 +81,7 @@ func SetupConnection(ip, port, authToken string) (*websocket.Conn, context.Conte
err = VerifyAuthResponse(conn, ctx)
if err != nil {
ctxCancel()
log.Printf("ERROR: Auth token is invalid. Please double check it or create a new token in your Home Assistant profile\n")
slog.Error("Auth token is invalid. Please double check it or create a new token in your Home Assistant profile\n")
return nil, nil, nil, err
}
@@ -143,7 +141,9 @@ func SubscribeToEventType(eventType string, conn *WebsocketWriter, ctx context.C
}
err := conn.WriteMessage(e, ctx)
if err != nil {
log.Fatalf("Error writing to websocket: %s\n", err)
wrappedErr := fmt.Errorf("error writing to websocket: %w", err)
slog.Error(wrappedErr.Error())
panic(wrappedErr)
}
// m, _ := ReadMessage(conn, ctx)
// log.Default().Println(string(m))