From 9c0fa56cfcd09193477b0e922cf0ebb5559f48e0 Mon Sep 17 00:00:00 2001 From: Edwin Date: Sat, 19 Aug 2017 15:59:22 +0800 Subject: [PATCH] istclient: cast the response by *p2p.PeerInfo --- istclient/client.go | 10 +++++----- istclient/client_test.go | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/istclient/client.go b/istclient/client.go index 73c552ff..372cece2 100644 --- a/istclient/client.go +++ b/istclient/client.go @@ -23,6 +23,7 @@ import ( "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/rpc" ) @@ -55,15 +56,14 @@ func (ic *Client) AddPeer(ctx context.Context, nodeURL string) error { return err } -func (ic *Client) AdminPeers(ctx context.Context) error { - var r bool - // TODO: Result needs to be verified +func (ic *Client) AdminPeers(ctx context.Context) ([]*p2p.PeerInfo, error) { + var r []*p2p.PeerInfo // The response data type are bytes, but we cannot parse... err := ic.c.CallContext(ctx, &r, "admin_peers") if err != nil { - return err + return nil, err } - return err + return r, err } // ---------------------------------------------------------------------------- diff --git a/istclient/client_test.go b/istclient/client_test.go index 16e35ba3..952232bb 100644 --- a/istclient/client_test.go +++ b/istclient/client_test.go @@ -19,6 +19,7 @@ package istclient import ( "context" "log" + "fmt" "github.com/ethereum/go-ethereum/common" ) @@ -48,7 +49,7 @@ func ExampleProposerValidator() { } func ExampleGetValidators() { - client, err := Dial("ws://192.168.99.100:53257") + client, err := Dial("ws://127.0.0.1:53257") if err != nil { log.Fatal("failed to dial, err:", err) } @@ -58,6 +59,35 @@ func ExampleGetValidators() { log.Fatal("failed to get validators, err:", err) } for _, addr := range addrs { - log.Println("address:",addr.Hex()) + log.Println("address:", addr.Hex()) + } +} + +func ExampleAdminPeers() { + client, err := Dial("ws://127.0.0.1:62975") + if err != nil { + log.Fatal("failed to dial, err:", err) + } + + peersInfo, err := client.AdminPeers(context.Background()) + if err != nil { + log.Fatal("failed to get validators, err:", err) + } + + fmt.Println("connected peer length:", len(peersInfo)) + for _, peer := range peersInfo { + fmt.Println("address:", peer) + } +} + +func ExampleAddPeer() { + client, err := Dial("ws://127.0.0.1:62975") + if err != nil { + log.Fatal("failed to dial, err:", err) + } + + err = client.AddPeer(context.Background(), "enode://ad5b4b201cc0ef5cd6ce27e32c223d1852a8b7d6069de5c3c597601e94841a5811a354261726da7b8f851e9042d5aeaed580dbb7493d22a5d922206dce3ccdb8@192.168.99.100:63040?discport=0") + if err != nil { + log.Fatal("failed to get validators, err:", err) } }