begin implementing rpc

This commit is contained in:
mykola2312 2025-01-21 17:30:27 +02:00
parent 2119403892
commit 76d49d57b8
2 changed files with 59 additions and 0 deletions

17
rpc/lux_rpc.go Normal file
View file

@ -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"`
}

42
tests/lux_rpc_test.go Normal file
View file

@ -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 id="1" controller="keystore" command="new-host" />`), &request)
if err != nil {
t.Fatal(err)
}
t.Log(request)
err = xml.Unmarshal([]byte(`<request id="2" controller="router" command="show-routes" />`), &request)
if err != nil {
t.Fatal(err)
}
t.Log(request)
err = xml.Unmarshal([]byte(`
<request id="3" controller="node" command="query">
<host hostname="test-host" />
<host id="0002" />
</request>`), &request)
if err != nil {
t.Fatal(err)
}
t.Log(request)
err = xml.Unmarshal([]byte(`
<request id="4" controller="node" command="resolve-wan">
<host hostname="test-host" />
</request>`), &request)
if err != nil {
t.Fatal(err)
}
t.Log(request)
}