From d4fa3dbb5b1bb79d8c60885e3550f1d566e8a4c6 Mon Sep 17 00:00:00 2001 From: Collin Guarino Date: Sat, 23 Jan 2016 12:45:06 -0500 Subject: Fully operational GetBridgeInfo function. --- bridge.go | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) (limited to 'bridge.go') diff --git a/bridge.go b/bridge.go index f7a183b..a539bac 100644 --- a/bridge.go +++ b/bridge.go @@ -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:///description.xml and parse the info -func GetBridgeInfo(ip string) BridgeInfo { - response, error := http.Get("http://" + ip + "/description.xml") +// Go to http:///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 } -- cgit v1.2.3