improve error handling
This commit is contained in:
parent
4d496f7524
commit
bba7c22460
20
lights.go
20
lights.go
@ -3,6 +3,7 @@ package lifx
|
|||||||
import (
|
import (
|
||||||
//"crypto/tls"
|
//"crypto/tls"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -88,6 +89,17 @@ type (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func NewAPIError(resp *http.Response) error {
|
||||||
|
var (
|
||||||
|
s *Response
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
if err = json.NewDecoder(resp.Body).Decode(&s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return fmt.Errorf("fatal: %s", s.Error)
|
||||||
|
}
|
||||||
|
|
||||||
func (s Status) Success() bool {
|
func (s Status) Success() bool {
|
||||||
return s == OK
|
return s == OK
|
||||||
}
|
}
|
||||||
@ -170,6 +182,10 @@ func (c *Client) Toggle(selector string, duration float64) (*Response, error) {
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
if resp.StatusCode > 299 {
|
||||||
|
return nil, NewAPIError(resp)
|
||||||
|
}
|
||||||
|
|
||||||
if err = json.NewDecoder(resp.Body).Decode(&s); err != nil {
|
if err = json.NewDecoder(resp.Body).Decode(&s); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -189,6 +205,10 @@ func (c *Client) ListLights(selector string) ([]Light, error) {
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
if resp.StatusCode > 299 {
|
||||||
|
return nil, NewAPIError(resp)
|
||||||
|
}
|
||||||
|
|
||||||
if err = json.NewDecoder(resp.Body).Decode(&s); err != nil {
|
if err = json.NewDecoder(resp.Body).Decode(&s); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user