Compare commits
No commits in common. "e373e7e273c47f9e64f0db37a1ac68642e06a776" and "5bafaa35e4dd73f4d0ec9df8a96c2b5ddc141fc1" have entirely different histories.
e373e7e273
...
5bafaa35e4
14
client.go
14
client.go
@ -114,20 +114,6 @@ func NewResponse(r *http.Response) (*Response, error) {
|
|||||||
return &resp, nil
|
return &resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Response) IsError() bool {
|
|
||||||
return r.StatusCode > 299
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *Response) GetLifxError() (err error) {
|
|
||||||
var (
|
|
||||||
s *LifxResponse
|
|
||||||
)
|
|
||||||
if err = json.NewDecoder(r.Body).Decode(&s); err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return errors.New(s.Error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Client) NewRequest(method, url string, body io.Reader) (req *http.Request, err error) {
|
func (c *Client) NewRequest(method, url string, body io.Reader) (req *http.Request, err error) {
|
||||||
req, err = http.NewRequest(method, url, body)
|
req, err = http.NewRequest(method, url, body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
31
lights.go
31
lights.go
@ -3,6 +3,8 @@ package lifx
|
|||||||
import (
|
import (
|
||||||
//"crypto/tls"
|
//"crypto/tls"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -88,6 +90,25 @@ type (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func NewApiError(resp *Response) error {
|
||||||
|
var (
|
||||||
|
s *LifxResponse
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
if err = json.NewDecoder(resp.Body).Decode(&s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return errors.New(s.Error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsApiError(resp *Response) bool {
|
||||||
|
return resp.StatusCode > 299
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s Status) Success() bool {
|
||||||
|
return s == OK
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Client) SetState(selector string, state State) (*LifxResponse, error) {
|
func (c *Client) SetState(selector string, state State) (*LifxResponse, error) {
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
@ -100,8 +121,8 @@ func (c *Client) SetState(selector string, state State) (*LifxResponse, error) {
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
if resp.IsError() {
|
if IsApiError(resp) {
|
||||||
return nil, resp.GetLifxError()
|
return nil, NewApiError(resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
if state.Fast && resp.StatusCode == http.StatusAccepted {
|
if state.Fast && resp.StatusCode == http.StatusAccepted {
|
||||||
@ -170,8 +191,8 @@ func (c *Client) Toggle(selector string, duration float64) (*LifxResponse, error
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
if resp.IsError() {
|
if IsApiError(resp) {
|
||||||
return nil, resp.GetLifxError()
|
return nil, NewApiError(resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = json.NewDecoder(resp.Body).Decode(&s); err != nil {
|
if err = json.NewDecoder(resp.Body).Decode(&s); err != nil {
|
||||||
@ -194,7 +215,7 @@ func (c *Client) ListLights(selector string) ([]Light, error) {
|
|||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
if resp.StatusCode > 299 {
|
if resp.StatusCode > 299 {
|
||||||
return nil, resp.GetLifxError()
|
return nil, NewApiError(resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = json.NewDecoder(resp.Body).Decode(&s); err != nil {
|
if err = json.NewDecoder(resp.Body).Decode(&s); err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user