From 0653dcab284be6f05ebf8dc4b3054b49d9a5b519 Mon Sep 17 00:00:00 2001 From: Collin Guarino Date: Mon, 15 Feb 2016 10:15:23 -0500 Subject: Implementation for Bridge.CreateScene --- README.md | 2 +- scene.go | 36 +++++++++++++++++++++++------------- scene_test.go | 10 ++++++++-- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 1a46d56..1dcc2e7 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Pull requests happily accepted on GitHub ##### Scenes - [x] Get all scenes - [x] Get scene by ID -- [ ] Create scene +- [x] Create scene - [ ] Modify scene - [ ] Recall scene - [ ] Delete scene diff --git a/scene.go b/scene.go index da26718..4ef319f 100644 --- a/scene.go +++ b/scene.go @@ -15,19 +15,19 @@ import ( // Scene struct defines attributes for Scene items type Scene struct { - Appdata struct { - Data string `json:"data"` - Version int `json:"version"` - } `json:"appdata"` - Lastupdated string `json:"lastupdated"` - Lights []string `json:"lights"` - Locked bool `json:"locked"` - Name string `json:"name"` - Owner string `json:"owner"` - Picture string `json:"picture"` - Recycle bool `json:"recycle"` - Version int `json:"version"` - ID string + Appdata *struct { + Data string `json:"data,omitempty"` + Version int `json:"version,omitempty"` + } `json:"appdata,omitempty"` + Lastupdated string `json:"lastupdated,omitempty"` + Lights []string `json:"lights,omitempty"` + Locked bool `json:"locked,omitempty"` + Name string `json:"name,omitempty"` + Owner string `json:"owner,omitempty"` + Picture string `json:"picture,omitempty"` + Recycle bool `json:"recycle,omitempty"` + Version int `json:"version,omitempty"` + ID string `json:",omitempty"` } // Bridge.GetScenes will get attributes for all scenes. @@ -70,3 +70,13 @@ func (bridge *Bridge) GetScene(id string) (Scene, error) { } return scene, nil } + +// Bridge.CreateScene will post a new scene configuration to the bridge. +func (bridge *Bridge) CreateScene(scene Scene) error { + uri := fmt.Sprintf("/api/%s/scenes/", bridge.Username) + body, _, err := bridge.Post(uri, scene) + if err != nil { + return err + } + return nil +} diff --git a/scene_test.go b/scene_test.go index 27998f6..07d630c 100644 --- a/scene_test.go +++ b/scene_test.go @@ -12,9 +12,9 @@ import ( "fmt" ) -func TestGetScenes(t *testing.T) { +func TestGetAllScenes(t *testing.T) { bridge, _ := NewBridge("192.168.1.128", "427de8bd6d49f149c8398e4fc08f") - scenes, _ := bridge.GetScenes() + scenes, _ := bridge.GetAllScenes() for scene := range scenes { fmt.Println("SCENE: ", scenes[scene]) } @@ -22,3 +22,9 @@ func TestGetScenes(t *testing.T) { individual, _ := bridge.GetScene(scenes[0].ID) fmt.Println("Individual scene: ", individual) } + +func TestCreateScene(t *testing.T) { + bridge, _ := NewBridge("192.168.1.128", "427de8bd6d49f149c8398e4fc08f") + scene := Scene{Lights: []string{"1", "2"}} + _ = bridge.CreateScene(scene) +} -- cgit v1.2.3