From e9f07b9b32bc45281de7df73831387e0f92f9bd2 Mon Sep 17 00:00:00 2001 From: Sam Lewis Date: Wed, 9 Nov 2022 20:31:06 -0500 Subject: [PATCH] add number service --- internal/services/number.go | 26 ++++++++++++++++++++++++++ internal/services/services.go | 3 ++- service.go | 2 ++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 internal/services/number.go diff --git a/internal/services/number.go b/internal/services/number.go new file mode 100644 index 0000000..34d9b73 --- /dev/null +++ b/internal/services/number.go @@ -0,0 +1,26 @@ +package services + +import ( + "context" + + "github.com/gorilla/websocket" + ws "github.com/saml-dev/gome-assistant/internal/websocket" +) + +/* Structs */ + +type Number struct { + conn *websocket.Conn + ctx context.Context +} + +/* Public API */ + +func (ib Number) SetValue(entityId string, value int) { + req := NewBaseServiceRequest(entityId) + req.Domain = "number" + req.Service = "set_value" + req.ServiceData = map[string]any{"value": value} + + ws.WriteMessage(req, ib.conn, ib.ctx) +} diff --git a/internal/services/services.go b/internal/services/services.go index aa9fb5b..c5eb635 100644 --- a/internal/services/services.go +++ b/internal/services/services.go @@ -18,7 +18,8 @@ func BuildService[ InputDatetime | InputText | InputNumber | - Notify, + Notify | + Number, ](conn *websocket.Conn, ctx context.Context) *T { return &T{conn: conn, ctx: ctx} } diff --git a/service.go b/service.go index 5b12476..aeec704 100644 --- a/service.go +++ b/service.go @@ -19,6 +19,7 @@ type Service struct { InputDatetime *services.InputDatetime InputNumber *services.InputNumber Notify *services.Notify + Number *services.Number } func newService(conn *websocket.Conn, ctx context.Context, httpClient *http.HttpClient) *Service { @@ -33,5 +34,6 @@ func newService(conn *websocket.Conn, ctx context.Context, httpClient *http.Http InputDatetime: services.BuildService[services.InputDatetime](conn, ctx), InputNumber: services.BuildService[services.InputNumber](conn, ctx), Notify: services.BuildService[services.Notify](conn, ctx), + Number: services.BuildService[services.Number](conn, ctx), } }