diff --git a/go.mod b/go.mod index 08ac17f..c948235 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,6 @@ go 1.16 require ( cloud.google.com/go/secretmanager v1.4.0 - github.com/gonzolino/gotado v0.3.0 + github.com/gonzolino/gotado/v2 v2.0.1 google.golang.org/genproto v0.0.0-20220405205423-9d709892a2bf ) diff --git a/go.sum b/go.sum index bf276fc..56b934e 100644 --- a/go.sum +++ b/go.sum @@ -122,8 +122,8 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gonzolino/gotado v0.3.0 h1:C2EYL5LG0TtgAdxSWMjIMWuiOOJG/gciYabTOfl0f58= -github.com/gonzolino/gotado v0.3.0/go.mod h1:d28DwZ/nDgzprlp9nkMKnGJcBot/rs26QubifoHpDzI= +github.com/gonzolino/gotado/v2 v2.0.1 h1:NNoAEPfV2k7Qpr+vzcFNQGAjOQxNBabxCtVbBgGVMMY= +github.com/gonzolino/gotado/v2 v2.0.1/go.mod h1:GMiT2gP2rnZ7Blpy60aOFC7as6ZHG1wqLz44Q8229VA= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -187,8 +187,9 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -290,7 +291,6 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= diff --git a/window-close.go b/window-close.go index 9353bbc..5b9aa7a 100644 --- a/window-close.go +++ b/window-close.go @@ -6,9 +6,8 @@ import ( "log" "net/http" "os" - "time" - "github.com/gonzolino/gotado" + "github.com/gonzolino/gotado/v2" ) const ( @@ -96,54 +95,38 @@ func CloseWindow(w http.ResponseWriter, r *http.Request) { return } - tadoClient, err := gotado.NewClient(tadoClientID, tadoClientSecret). - WithTimeout(5*time.Second). - WithCredentials(ctx, tadoUsername, tadoPassword) - if err != nil { - // Treat failed tado login as internal server error, since credentials, - // authentication, etc. of tado° is all managed on the server side. User has no - log.Printf("Failed tado° login: %v", err) - httpError(w, http.StatusInternalServerError) - return - } + // tadoClient, err := gotado.NewClient(tadoClientID, tadoClientSecret). + // WithTimeout(5*time.Second). + // WithCredentials(ctx, tadoUsername, tadoPassword) + // if err != nil { + // // Treat failed tado login as internal server error, since credentials, + // // authentication, etc. of tado° is all managed on the server side. User has no + // log.Printf("Failed tado° login: %v", err) + // httpError(w, http.StatusInternalServerError) + // return + // } - user, err := gotado.GetMe(tadoClient) + tado := gotado.New(tadoClientID, tadoClientSecret) + user, err := tado.Me(ctx, tadoUsername, tadoPassword) if err != nil { log.Printf("Failed to get user info from tado°: %v", err) httpError(w, http.StatusInternalServerError) return } - var userHome *gotado.UserHome - for _, h := range user.Homes { - if h.Name == action.HomeName { - h := h - userHome = &h - break - } - } - if userHome == nil { - http.Error(w, "Unkown home name", http.StatusUnprocessableEntity) + home, err := user.GetHome(ctx, action.HomeName) + if err != nil { + log.Printf("Failed to get home info from tado°: %v", err) + httpError(w, http.StatusInternalServerError) return } - zones, err := gotado.GetZones(tadoClient, userHome) + zone, err := home.GetZone(ctx, action.ZoneName) if err != nil { log.Printf("Failed to get home zones from tado°: %v", err) httpError(w, http.StatusInternalServerError) return } - var zone *gotado.Zone - for _, z := range zones { - if z.Name == action.ZoneName { - zone = z - break - } - } - if zone == nil { - http.Error(w, "Unkown zone name", http.StatusUnprocessableEntity) - return - } - state, err := gotado.GetZoneState(tadoClient, userHome, zone) + state, err := zone.GetState(ctx) if err != nil { log.Printf("Failed to get zone state from tado°: %v", err) httpError(w, http.StatusInternalServerError) @@ -154,8 +137,8 @@ func CloseWindow(w http.ResponseWriter, r *http.Request) { // because of an open window. We can therefore return to normal heating // when the window is closed. if state.Overlay.Type == "MANUAL" { - if err := gotado.DeleteZoneOverlay(tadoClient, userHome, zone); err != nil { - log.Printf("Failed to delete manual tado° zone overlay: %v", err) + if err := zone.ResumeSchedule(ctx); err != nil { + log.Printf("Failed to resume tado° zone schedule: %v", err) httpError(w, http.StatusInternalServerError) return } @@ -163,7 +146,7 @@ func CloseWindow(w http.ResponseWriter, r *http.Request) { } - if err := gotado.SetWindowClosed(tadoClient, userHome, zone); err != nil { + if err := zone.CloseWindow(ctx); err != nil { log.Printf("Failed to close window with tado° API: %v", err) httpError(w, http.StatusInternalServerError) return