mirror of
https://github.com/Xevion/go-ha.git
synced 2025-12-06 01:15:10 -06:00
Add functionality to list entities from REST endpoint
This commit is contained in:
@@ -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 {
|
||||
|
||||
11
state.go
11
state.go
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user