clusterviz/jsonrpc.go
Ivan Danyliuk a5c6a531fc
Refactor
2018-06-19 17:40:46 +02:00

47 lines
1.1 KiB
Go

package main
import (
"encoding/json"
"io"
"github.com/ethereum/go-ethereum/p2p"
)
// PeersResponse represents JSON-RPC response for `admin_peers` command from
// geth instance.
type PeersResponse struct {
Version string `json:"jsonrpc"`
Id interface{} `json:"id,omitempty"`
Result []*p2p.PeerInfo `json:"result"`
}
// ParsePeersResponse parses JSON-RPC 'admin_peers' response from reader r.
func ParsePeersResponse(r io.Reader) ([]*p2p.PeerInfo, error) {
var resp PeersResponse
err := json.NewDecoder(r).Decode(&resp)
if err != nil {
return nil, err
}
return resp.Result, nil
}
// NodeInfoResponse represents JSON-RPC response for `admin_nodeInfo` command from
// geth instance.
type NodeInfoResponse struct {
Version string `json:"jsonrpc"`
Id interface{} `json:"id,omitempty"`
Result *p2p.NodeInfo `json:"result"`
}
// ParseNodeInfoResponse parses JSON-RPC 'admin_nodeInfo' response from reader r.
func ParseNodeInfoResponse(r io.Reader) (*p2p.NodeInfo, error) {
var resp NodeInfoResponse
err := json.NewDecoder(r).Decode(&resp)
if err != nil {
return nil, err
}
return resp.Result, nil
}