Output format and nil fixes

This commit is contained in:
Taylor Gerring 2015-04-07 06:10:00 -05:00
parent 5c988c8ea0
commit 1aaeae292d
1 changed files with 21 additions and 11 deletions

View File

@ -53,28 +53,21 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
case "net_listening": case "net_listening":
*reply = api.xeth().IsListening() *reply = api.xeth().IsListening()
case "net_peerCount": case "net_peerCount":
v := api.xeth().PeerCount() *reply = newHexNum(api.xeth().PeerCount())
*reply = common.ToHex(big.NewInt(int64(v)).Bytes())
case "eth_protocolVersion": case "eth_protocolVersion":
*reply = api.xeth().EthVersion() *reply = api.xeth().EthVersion()
case "eth_coinbase": case "eth_coinbase":
// TODO handling of empty coinbase due to lack of accounts *reply = newHexData(api.xeth().Coinbase())
res := api.xeth().Coinbase()
if res == "0x" || res == "0x0" {
*reply = nil
} else {
*reply = res
}
case "eth_mining": case "eth_mining":
*reply = api.xeth().IsMining() *reply = api.xeth().IsMining()
case "eth_gasPrice": case "eth_gasPrice":
v := xeth.DefaultGas() v := xeth.DefaultGas()
*reply = common.ToHex(v.Bytes()) *reply = newHexData(v.Bytes())
case "eth_accounts": case "eth_accounts":
*reply = api.xeth().Accounts() *reply = api.xeth().Accounts()
case "eth_blockNumber": case "eth_blockNumber":
v := api.xeth().CurrentBlock().Number() v := api.xeth().CurrentBlock().Number()
*reply = common.ToHex(v.Bytes()) *reply = newHexNum(v.Bytes())
case "eth_getBalance": case "eth_getBalance":
args := new(GetBalanceArgs) args := new(GetBalanceArgs)
if err := json.Unmarshal(req.Params, &args); err != nil { if err := json.Unmarshal(req.Params, &args); err != nil {
@ -125,6 +118,11 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
} }
block := NewBlockRes(api.xeth().EthBlockByNumber(args.BlockNumber), false) block := NewBlockRes(api.xeth().EthBlockByNumber(args.BlockNumber), false)
if block == nil {
*reply = nil
break
}
*reply = common.ToHex(big.NewInt(int64(len(block.Transactions))).Bytes()) *reply = common.ToHex(big.NewInt(int64(len(block.Transactions))).Bytes())
case "eth_getUncleCountByBlockHash": case "eth_getUncleCountByBlockHash":
args := new(HashArgs) args := new(HashArgs)
@ -134,6 +132,11 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
block := api.xeth().EthBlockByHash(args.Hash) block := api.xeth().EthBlockByHash(args.Hash)
br := NewBlockRes(block, false) br := NewBlockRes(block, false)
if br == nil {
*reply = nil
break
}
*reply = common.ToHex(big.NewInt(int64(len(br.Uncles))).Bytes()) *reply = common.ToHex(big.NewInt(int64(len(br.Uncles))).Bytes())
case "eth_getUncleCountByBlockNumber": case "eth_getUncleCountByBlockNumber":
args := new(BlockNumArg) args := new(BlockNumArg)
@ -143,6 +146,11 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
block := api.xeth().EthBlockByNumber(args.BlockNumber) block := api.xeth().EthBlockByNumber(args.BlockNumber)
br := NewBlockRes(block, false) br := NewBlockRes(block, false)
if br == nil {
*reply = nil
break
}
*reply = common.ToHex(big.NewInt(int64(len(br.Uncles))).Bytes()) *reply = common.ToHex(big.NewInt(int64(len(br.Uncles))).Bytes())
case "eth_getData", "eth_getCode": case "eth_getData", "eth_getCode":
args := new(GetDataArgs) args := new(GetDataArgs)
@ -219,6 +227,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
br := NewBlockRes(block, true) br := NewBlockRes(block, true)
if br == nil { if br == nil {
*reply = nil *reply = nil
break
} }
if args.Index >= int64(len(br.Transactions)) || args.Index < 0 { if args.Index >= int64(len(br.Transactions)) || args.Index < 0 {
@ -237,6 +246,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
v := NewBlockRes(block, true) v := NewBlockRes(block, true)
if v == nil { if v == nil {
*reply = nil *reply = nil
break
} }
if args.Index >= int64(len(v.Transactions)) || args.Index < 0 { if args.Index >= int64(len(v.Transactions)) || args.Index < 0 {