cleanup of javascript API

This commit is contained in:
Bas van Kervel 2015-06-10 11:29:52 +02:00 committed by Bas van Kervel
parent 87b62f75a7
commit bd38428f33
10 changed files with 91 additions and 89 deletions

View File

@ -32,12 +32,12 @@ import (
"github.com/ethereum/go-ethereum/common/docserver"
re "github.com/ethereum/go-ethereum/jsre"
"github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/rpc/api"
"github.com/ethereum/go-ethereum/rpc/codec"
"github.com/ethereum/go-ethereum/rpc/comms"
"github.com/ethereum/go-ethereum/rpc/shared"
"github.com/peterh/liner"
"github.com/robertkrimen/otto"
"github.com/ethereum/go-ethereum/rpc/api"
)
type prompter interface {
@ -235,6 +235,7 @@ func (self *jsre) suportedApis(ipcpath string) ([]string, error) {
// show summary of current geth instance
func (self *jsre) welcome(ipcpath string) {
self.re.Eval(`console.log('instance: ' + web3.version.client);`)
self.re.Eval(`console.log(' datadir: ' + admin.datadir);`)
self.re.Eval(`console.log("coinbase: " + eth.coinbase);`)
self.re.Eval(`var lastBlockTimestamp = 1000 * eth.getBlock(eth.blockNumber).timestamp`)
self.re.Eval(`console.log("at block: " + eth.blockNumber + " (" + new Date(lastBlockTimestamp).toLocaleDateString()

View File

@ -31,8 +31,9 @@ var (
"admin_exportChain": (*adminApi).ExportChain,
"admin_importChain": (*adminApi).ImportChain,
"admin_verbosity": (*adminApi).Verbosity,
"admin_syncStatus": (*adminApi).SyncStatus,
"admin_chainSyncStatus": (*adminApi).ChainSyncStatus,
"admin_setSolc": (*adminApi).SetSolc,
"admin_datadir": (*adminApi).DataDir,
}
)
@ -129,6 +130,10 @@ func (self *adminApi) NodeInfo(req *shared.Request) (interface{}, error) {
return self.ethereum.NodeInfo(), nil
}
func (self *adminApi) DataDir(req *shared.Request) (interface{}, error) {
return self.ethereum.DataDir, nil
}
func hasAllBlocks(chain *core.ChainManager, bs []*types.Block) bool {
for _, b := range bs {
if !chain.HasBlock(b.Hash()) {
@ -209,9 +214,9 @@ func (self *adminApi) Verbosity(req *shared.Request) (interface{}, error) {
return true, nil
}
func (self *adminApi) SyncStatus(req *shared.Request) (interface{}, error) {
func (self *adminApi) ChainSyncStatus(req *shared.Request) (interface{}, error) {
pending, cached := self.ethereum.Downloader().Stats()
return map[string]interface{}{"available": pending, "waitingForImport": cached}, nil
return map[string]interface{}{"blocksAvailable": pending, "blocksWaitingForImport": cached}, nil
}
func (self *adminApi) SetSolc(req *shared.Request) (interface{}, error) {

View File

@ -3,8 +3,6 @@ package api
import (
"encoding/json"
"math/big"
"github.com/ethereum/go-ethereum/rpc/shared"
)
@ -68,16 +66,8 @@ func (args *VerbosityArgs) UnmarshalJSON(b []byte) (err error) {
return shared.NewDecodeParamError("Expected enode as argument")
}
if levelint, ok := obj[0].(int); ok {
args.Level = levelint
} else if levelstr, ok := obj[0].(string); ok {
if !ok {
return shared.NewInvalidTypeError("level", "not a string")
}
level, success := new(big.Int).SetString(levelstr, 0)
if !success {
return shared.NewDecodeParamError("Unable to parse verbosity level")
}
level, err := numString(obj[0])
if err == nil {
args.Level = int(level.Int64())
}

View File

@ -12,13 +12,6 @@ web3._extend({
inputFormatter: [web3._extend.utils.formatInputString],
outputFormatter: web3._extend.formatters.formatOutputBool
}),
new web3._extend.Method({
name: 'peers',
call: 'admin_peers',
params: 0,
inputFormatter: [],
outputFormatter: function(obj) { return obj; }
}),
new web3._extend.Method({
name: 'exportChain',
call: 'admin_exportChain',
@ -40,13 +33,6 @@ web3._extend({
inputFormatter: [web3._extend.utils.formatInputInt],
outputFormatter: web3._extend.formatters.formatOutputBool
}),
new web3._extend.Method({
name: 'syncStatus',
call: 'admin_syncStatus',
params: 1,
inputFormatter: [web3._extend.utils.formatInputInt],
outputFormatter: function(obj) { return obj; }
}),
new web3._extend.Method({
name: 'setSolc',
call: 'admin_setSolc',
@ -61,6 +47,21 @@ web3._extend({
name: 'nodeInfo',
getter: 'admin_nodeInfo',
outputFormatter: web3._extend.formatters.formatOutputString
}),
new web3._extend.Property({
name: 'peers',
getter: 'admin_peers',
outputFormatter: function(obj) { return obj; }
}),
new web3._extend.Property({
name: 'datadir',
getter: 'admin_datadir',
outputFormatter: web3._extend.formatters.formatOutputString
}),
new web3._extend.Property({
name: 'chainSyncStatus',
getter: 'admin_chainSyncStatus',
outputFormatter: function(obj) { return obj; }
})
]
});

View File

@ -41,6 +41,10 @@ func (args *SetExtraArgs) UnmarshalJSON(b []byte) (err error) {
return shared.NewDecodeParamError(err.Error())
}
if len(obj) < 1 {
return shared.NewInsufficientParamsError(len(obj), 1)
}
extrastr, ok := obj[0].(string)
if !ok {
return shared.NewInvalidTypeError("Price", "not a string")
@ -60,15 +64,18 @@ func (args *GasPriceArgs) UnmarshalJSON(b []byte) (err error) {
return shared.NewDecodeParamError(err.Error())
}
pricestr, ok := obj[0].(string)
if !ok {
return shared.NewInvalidTypeError("Price", "not a string")
if len(obj) < 1 {
return shared.NewInsufficientParamsError(len(obj), 1)
}
args.Price = pricestr
if pricestr, ok := obj[0].(string); ok {
args.Price = pricestr
return nil
}
return shared.NewInvalidTypeError("Price", "not a string")
}
type MakeDAGArgs struct {
BlockNumber int64
}

View File

@ -19,13 +19,6 @@ web3._extend({
inputFormatter: [web3._extend.formatters.formatInputInt],
outputFormatter: web3._extend.formatters.formatOutputBool
}),
new web3._extend.Method({
name: 'getHashrate',
call: 'miner_hashrate',
params: 0,
inputFormatter: [],
outputFormatter: web3._extend.utils.toDecimal
}),
new web3._extend.Method({
name: 'setExtra',
call: 'miner_setExtra',

View File

@ -10,7 +10,7 @@ import (
var (
// mapping between methods and handlers
netMapping = map[string]nethandler{
"net_id": (*netApi).NetworkVersion,
"net_version": (*netApi).Version,
"net_peerCount": (*netApi).PeerCount,
"net_listening": (*netApi).IsListening,
"net_peers": (*netApi).Peers,
@ -63,7 +63,7 @@ func (self *netApi) Name() string {
}
// Network version
func (self *netApi) NetworkVersion(req *shared.Request) (interface{}, error) {
func (self *netApi) Version(req *shared.Request) (interface{}, error) {
return self.xeth.NetworkVersion(), nil
}

View File

@ -12,26 +12,12 @@ web3._extend({
inputFormatter: [web3._extend.utils.formatInputString],
outputFormatter: web3._extend.formatters.formatOutputBool
}),
new web3._extend.Method({
name: 'id',
call: 'net_id',
params: 0,
inputFormatter: [],
outputFormatter: web3._extend.formatters.formatOutputString
}),
new web3._extend.Method({
name: 'getPeerCount',
call: 'net_peerCount',
params: 0,
inputFormatter: [],
outputFormatter: web3._extend.formatters.formatOutputString
}),
new web3._extend.Method({
name: 'peers',
call: 'net_peers',
params: 0,
inputFormatter: [],
outputFormatter: function(obj) { return obj; }
})
],
properties:
@ -45,6 +31,16 @@ web3._extend({
name: 'peerCount',
getter: 'net_peerCount',
outputFormatter: web3._extend.utils.toDecimal
}),
new web3._extend.Property({
name: 'peers',
getter: 'net_peers',
outputFormatter: function(obj) { return obj; }
}),
new web3._extend.Property({
name: 'version',
getter: 'net_version',
outputFormatter: web3._extend.formatters.formatOutputString
})
]
});

View File

@ -16,15 +16,18 @@ func (args *NewAccountArgs) UnmarshalJSON(b []byte) (err error) {
return shared.NewDecodeParamError(err.Error())
}
passhrase, ok := obj[0].(string)
if !ok {
return shared.NewInvalidTypeError("passhrase", "not a string")
if len(obj) < 1 {
return shared.NewInsufficientParamsError(len(obj), 1)
}
args.Passphrase = passhrase
if passhrase, ok := obj[0].(string); ok {
args.Passphrase = passhrase
return nil
}
return shared.NewInvalidTypeError("passhrase", "not a string")
}
type DeleteAccountArgs struct {
Address string
Passphrase string
@ -36,17 +39,21 @@ func (args *DeleteAccountArgs) UnmarshalJSON(b []byte) (err error) {
return shared.NewDecodeParamError(err.Error())
}
addr, ok := obj[0].(string)
if !ok {
if len(obj) < 2 {
return shared.NewInsufficientParamsError(len(obj), 2)
}
if addr, ok := obj[0].(string); ok {
args.Address = addr
} else {
return shared.NewInvalidTypeError("address", "not a string")
}
args.Address = addr
passhrase, ok := obj[1].(string)
if !ok {
if passhrase, ok := obj[1].(string); ok {
args.Passphrase = passhrase
} else {
return shared.NewInvalidTypeError("passhrase", "not a string")
}
args.Passphrase = passhrase
return nil
}
@ -65,17 +72,21 @@ func (args *UnlockAccountArgs) UnmarshalJSON(b []byte) (err error) {
args.Duration = -1
addrstr, ok := obj[0].(string)
if !ok {
if len(obj) < 2 {
return shared.NewInsufficientParamsError(len(obj), 2)
}
if addrstr, ok := obj[0].(string); ok {
args.Address = addrstr
} else {
return shared.NewInvalidTypeError("address", "not a string")
}
args.Address = addrstr
passphrasestr, ok := obj[1].(string)
if !ok {
if passphrasestr, ok := obj[1].(string); ok {
args.Passphrase = passphrasestr
} else {
return shared.NewInvalidTypeError("passphrase", "not a string")
}
args.Passphrase = passphrasestr
return nil
}

View File

@ -5,13 +5,6 @@ web3._extend({
property: 'personal',
methods:
[
new web3._extend.Method({
name: 'listAccounts',
call: 'personal_listAccounts',
params: 0,
inputFormatter: [],
outputFormatter: function(obj) { return obj; }
}),
new web3._extend.Method({
name: 'newAccount',
call: 'personal_newAccount',
@ -29,6 +22,11 @@ web3._extend({
],
properties:
[
new web3._extend.Property({
name: 'accounts',
getter: 'personal_listAccounts',
outputFormatter: function(obj) { return obj; }
})
]
});
`