aboutsummaryrefslogtreecommitdiff
path: root/bridge.go
diff options
context:
space:
mode:
authorCollin Guarino <collin.guarino@gmail.com>2016-01-23 12:45:06 -0500
committerCollin Guarino <collin.guarino@gmail.com>2016-01-23 12:45:06 -0500
commitd4fa3dbb5b1bb79d8c60885e3550f1d566e8a4c6 (patch)
tree3e38cf8086df56eb6711c639f32bb90ebbb0fa26 /bridge.go
parented09ef1824144aa2cde37fd6566f2ea63a839c08 (diff)
Fully operational GetBridgeInfo function.
Diffstat (limited to 'bridge.go')
-rw-r--r--bridge.go42
1 files changed, 22 insertions, 20 deletions
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://<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
}