Add functionality to list entities from REST endpoint

This commit is contained in:
Jakub Zimny
2025-01-20 23:32:12 +01:00
parent 05131faa98
commit 84f9726b09
2 changed files with 19 additions and 0 deletions

View File

@@ -40,6 +40,14 @@ func (c *HttpClient) GetState(entityId string) ([]byte, error) {
return resp, nil
}
func (c *HttpClient) States() ([]byte, error) {
resp, err := get(c.url+"/states", c.token)
if err != nil {
return nil, err
}
return resp, nil
}
func get(url, token string) ([]byte, error) {
req, err := http.NewRequest("GET", url, nil)
if err != nil {

View File

@@ -16,6 +16,7 @@ type State interface {
BeforeSunrise(...DurationString) bool
AfterSunset(...DurationString) bool
BeforeSunset(...DurationString) bool
List() ([]EntityState, error)
Get(entityId string) (EntityState, error)
Equals(entityId, state string) (bool, error)
}
@@ -74,6 +75,16 @@ func (s *StateImpl) Get(entityId string) (EntityState, error) {
return es, err
}
func (s *StateImpl) List() ([]EntityState, error) {
resp, err := s.httpClient.States()
if err != nil {
return nil, err
}
es := []EntityState{}
err = json.Unmarshal(resp, &es)
return es, err
}
func (s *StateImpl) Equals(entityId string, expectedState string) (bool, error) {
currentState, err := s.Get(entityId)
if err != nil {