diff --git a/rpc/lux_rpc.go b/rpc/lux_rpc.go new file mode 100644 index 0000000..92e9c4a --- /dev/null +++ b/rpc/lux_rpc.go @@ -0,0 +1,17 @@ +package rpc + +import "encoding/xml" + +type LuxRpcRequest struct { + XMLName xml.Name `xml:"request"` + RequestID int `xml:"id,attr"` + Controller string `xml:"controller,attr"` + Command string `xml:"command,attr"` + + // Commands specific fields + Hosts []struct { + XMLName xml.Name `xml:"host"` + HostID string `xml:"id,attr"` + Hostname string `xml:"hostname,attr"` + } `xml:"host"` +} diff --git a/tests/lux_rpc_test.go b/tests/lux_rpc_test.go new file mode 100644 index 0000000..5fee861 --- /dev/null +++ b/tests/lux_rpc_test.go @@ -0,0 +1,42 @@ +package tests + +import ( + "encoding/xml" + "lux/rpc" + "testing" +) + +func TestRequestDecoding(t *testing.T) { + var request rpc.LuxRpcRequest + + err := xml.Unmarshal([]byte(``), &request) + if err != nil { + t.Fatal(err) + } + t.Log(request) + + err = xml.Unmarshal([]byte(``), &request) + if err != nil { + t.Fatal(err) + } + t.Log(request) + + err = xml.Unmarshal([]byte(` + + + + `), &request) + if err != nil { + t.Fatal(err) + } + t.Log(request) + + err = xml.Unmarshal([]byte(` + + + `), &request) + if err != nil { + t.Fatal(err) + } + t.Log(request) +}