diff --git a/bridge.go b/bridge.go new file mode 100644 index 0000000..fb0ae92 --- /dev/null +++ b/bridge.go @@ -0,0 +1,36 @@ +package main + +import ( + "bytes" + "encoding/json" + "net/http" +) + +// Bridge is the hue bridge interface +type Bridge struct { + Config *Config +} + +func (b *Bridge) postToBridge(endpoint string, payload interface{}) (interface{}, error) { + data, errMarhshal := json.Marshal(payload) + if errMarhshal != nil { + return nil, errMarhshal + } + uri := b.getBridgeAPIURI() + endpoint + req, err := http.NewRequest(http.MethodPost, uri, bytes.NewBuffer(data)) + if err != nil { + return nil, err + } + + req.Header.Set("Content-Type", "application/json") + client := &http.Client{} + res, err := client.Do(req) + if err != nil { + return nil, err + } + return res, nil +} + +func (b *Bridge) getBridgeAPIURI() string { + return b.Config.BridgeAddrScheme + "://" + b.Config.BridgeAddr + "/api/" + b.Config.Username +} diff --git a/config.go b/config.go index cbb78fa..f283f0e 100644 --- a/config.go +++ b/config.go @@ -9,8 +9,10 @@ import ( // Config hue api config type Config struct { - Username string `yaml:name` - Password string `yaml:userpassword` + Username string `yaml:name` + Password string `yaml:userpassword` + BridgeAddr string `yaml:bridgeAddress` + BridgeAddrScheme string `yaml:bridgeAddressScheme` } // createNewUser will create a new user. This should be called only of there's none in the yaml config.