aboutsummaryrefslogtreecommitdiff
path: root/bridge.go
diff options
context:
space:
mode:
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
}