diff options
author | Collin Guarino <collin.guarino@gmail.com> | 2016-01-23 12:45:06 -0500 |
---|---|---|
committer | Collin Guarino <collin.guarino@gmail.com> | 2016-01-23 12:45:06 -0500 |
commit | d4fa3dbb5b1bb79d8c60885e3550f1d566e8a4c6 (patch) | |
tree | 3e38cf8086df56eb6711c639f32bb90ebbb0fa26 /bridge.go | |
parent | ed09ef1824144aa2cde37fd6566f2ea63a839c08 (diff) |
Fully operational GetBridgeInfo function.
Diffstat (limited to 'bridge.go')
-rw-r--r-- | bridge.go | 42 |
1 files changed, 22 insertions, 20 deletions
@@ -20,32 +20,37 @@ type Bridge struct { } type BridgeInfo struct { - DeviceType string `xml:"deviceType"` - FriendlyName string `xml:"friendlyName"` - Manufacturer string `xml:"manufacturer"` - ManufacturerURL string `xml:"manufacturerURL"` - ModelDescription string `xml:"modelDescription"` - ModelName string `xml:"modelName"` - ModelNumber string `xml:"modelNumber"` - ModelURL string `xml:"modelURL"` - SerialNumber string `xml:"serialNumber"` - UDN string `xml:"UDN"` + XMLName xml.Name `xml:"root"` + Device Device `xml:"device"` +} + +type Device struct { + XMLName xml.Name `xml:"device"` + DeviceType string `xml:"deviceType"` + FriendlyName string `xml:"friendlyName"` + Manufacturer string `xml:"manufacturer"` + ManufacturerURL string `xml:"manufacturerURL"` + ModelDescription string `xml:"modelDescription"` + ModelName string `xml:"modelName"` + ModelNumber string `xml:"modelNumber"` + ModelURL string `xml:"modelURL"` + SerialNumber string `xml:"serialNumber"` + UDN string `xml:"UDN"` } func NewBridge(ip string) *Bridge { - // TODO: if yaml file exists then return bridge := Bridge { IPAddress: ip, // TODO: other defaults here } - bridge.Info = GetBridgeInfo(bridge.IPAddress) // TODO: IP var + GetBridgeInfo(&bridge) return &bridge } -// Go to http://<bridge_ip>/description.xml and parse the info -func GetBridgeInfo(ip string) BridgeInfo { - response, error := http.Get("http://" + ip + "/description.xml") +// Go to http://<bridge_ip>/description.xml set the bridge.Info +func GetBridgeInfo(self *Bridge) { + response, error := http.Get("http://" + self.IPAddress + "/description.xml") if response.StatusCode != 200 { log.Println("Bridge status error: %d", response.StatusCode) os.Exit(1) @@ -61,14 +66,11 @@ func GetBridgeInfo(ip string) BridgeInfo { os.Exit(1) } - data := BridgeInfo{} + data := new(BridgeInfo) error = xml.Unmarshal(body, &data) if error != nil { log.Println("GetBridgeInfo error. Cannot parse data from description.") log.Println(error) } - - log.Println(data) - - return data + self.Info = *data } |