cleanup of javascript API
This commit is contained in:
parent
87b62f75a7
commit
bd38428f33
@ -32,12 +32,12 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/common/docserver"
|
"github.com/ethereum/go-ethereum/common/docserver"
|
||||||
re "github.com/ethereum/go-ethereum/jsre"
|
re "github.com/ethereum/go-ethereum/jsre"
|
||||||
"github.com/ethereum/go-ethereum/rpc"
|
"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/codec"
|
||||||
"github.com/ethereum/go-ethereum/rpc/comms"
|
"github.com/ethereum/go-ethereum/rpc/comms"
|
||||||
"github.com/ethereum/go-ethereum/rpc/shared"
|
"github.com/ethereum/go-ethereum/rpc/shared"
|
||||||
"github.com/peterh/liner"
|
"github.com/peterh/liner"
|
||||||
"github.com/robertkrimen/otto"
|
"github.com/robertkrimen/otto"
|
||||||
"github.com/ethereum/go-ethereum/rpc/api"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type prompter interface {
|
type prompter interface {
|
||||||
@ -235,6 +235,7 @@ func (self *jsre) suportedApis(ipcpath string) ([]string, error) {
|
|||||||
// show summary of current geth instance
|
// show summary of current geth instance
|
||||||
func (self *jsre) welcome(ipcpath string) {
|
func (self *jsre) welcome(ipcpath string) {
|
||||||
self.re.Eval(`console.log('instance: ' + web3.version.client);`)
|
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(`console.log("coinbase: " + eth.coinbase);`)
|
||||||
self.re.Eval(`var lastBlockTimestamp = 1000 * eth.getBlock(eth.blockNumber).timestamp`)
|
self.re.Eval(`var lastBlockTimestamp = 1000 * eth.getBlock(eth.blockNumber).timestamp`)
|
||||||
self.re.Eval(`console.log("at block: " + eth.blockNumber + " (" + new Date(lastBlockTimestamp).toLocaleDateString()
|
self.re.Eval(`console.log("at block: " + eth.blockNumber + " (" + new Date(lastBlockTimestamp).toLocaleDateString()
|
||||||
|
@ -31,8 +31,9 @@ var (
|
|||||||
"admin_exportChain": (*adminApi).ExportChain,
|
"admin_exportChain": (*adminApi).ExportChain,
|
||||||
"admin_importChain": (*adminApi).ImportChain,
|
"admin_importChain": (*adminApi).ImportChain,
|
||||||
"admin_verbosity": (*adminApi).Verbosity,
|
"admin_verbosity": (*adminApi).Verbosity,
|
||||||
"admin_syncStatus": (*adminApi).SyncStatus,
|
"admin_chainSyncStatus": (*adminApi).ChainSyncStatus,
|
||||||
"admin_setSolc": (*adminApi).SetSolc,
|
"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
|
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 {
|
func hasAllBlocks(chain *core.ChainManager, bs []*types.Block) bool {
|
||||||
for _, b := range bs {
|
for _, b := range bs {
|
||||||
if !chain.HasBlock(b.Hash()) {
|
if !chain.HasBlock(b.Hash()) {
|
||||||
@ -209,9 +214,9 @@ func (self *adminApi) Verbosity(req *shared.Request) (interface{}, error) {
|
|||||||
return true, nil
|
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()
|
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) {
|
func (self *adminApi) SetSolc(req *shared.Request) (interface{}, error) {
|
||||||
|
@ -3,8 +3,6 @@ package api
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"math/big"
|
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/rpc/shared"
|
"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")
|
return shared.NewDecodeParamError("Expected enode as argument")
|
||||||
}
|
}
|
||||||
|
|
||||||
if levelint, ok := obj[0].(int); ok {
|
level, err := numString(obj[0])
|
||||||
args.Level = levelint
|
if err == nil {
|
||||||
} 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")
|
|
||||||
}
|
|
||||||
args.Level = int(level.Int64())
|
args.Level = int(level.Int64())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,13 +12,6 @@ web3._extend({
|
|||||||
inputFormatter: [web3._extend.utils.formatInputString],
|
inputFormatter: [web3._extend.utils.formatInputString],
|
||||||
outputFormatter: web3._extend.formatters.formatOutputBool
|
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({
|
new web3._extend.Method({
|
||||||
name: 'exportChain',
|
name: 'exportChain',
|
||||||
call: 'admin_exportChain',
|
call: 'admin_exportChain',
|
||||||
@ -40,13 +33,6 @@ web3._extend({
|
|||||||
inputFormatter: [web3._extend.utils.formatInputInt],
|
inputFormatter: [web3._extend.utils.formatInputInt],
|
||||||
outputFormatter: web3._extend.formatters.formatOutputBool
|
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({
|
new web3._extend.Method({
|
||||||
name: 'setSolc',
|
name: 'setSolc',
|
||||||
call: 'admin_setSolc',
|
call: 'admin_setSolc',
|
||||||
@ -61,6 +47,21 @@ web3._extend({
|
|||||||
name: 'nodeInfo',
|
name: 'nodeInfo',
|
||||||
getter: 'admin_nodeInfo',
|
getter: 'admin_nodeInfo',
|
||||||
outputFormatter: web3._extend.formatters.formatOutputString
|
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; }
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
@ -41,6 +41,10 @@ func (args *SetExtraArgs) UnmarshalJSON(b []byte) (err error) {
|
|||||||
return shared.NewDecodeParamError(err.Error())
|
return shared.NewDecodeParamError(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(obj) < 1 {
|
||||||
|
return shared.NewInsufficientParamsError(len(obj), 1)
|
||||||
|
}
|
||||||
|
|
||||||
extrastr, ok := obj[0].(string)
|
extrastr, ok := obj[0].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
return shared.NewInvalidTypeError("Price", "not a string")
|
return shared.NewInvalidTypeError("Price", "not a string")
|
||||||
@ -60,15 +64,18 @@ func (args *GasPriceArgs) UnmarshalJSON(b []byte) (err error) {
|
|||||||
return shared.NewDecodeParamError(err.Error())
|
return shared.NewDecodeParamError(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
pricestr, ok := obj[0].(string)
|
if len(obj) < 1 {
|
||||||
if !ok {
|
return shared.NewInsufficientParamsError(len(obj), 1)
|
||||||
return shared.NewInvalidTypeError("Price", "not a string")
|
|
||||||
}
|
}
|
||||||
args.Price = pricestr
|
|
||||||
|
|
||||||
|
if pricestr, ok := obj[0].(string); ok {
|
||||||
|
args.Price = pricestr
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return shared.NewInvalidTypeError("Price", "not a string")
|
||||||
|
}
|
||||||
|
|
||||||
type MakeDAGArgs struct {
|
type MakeDAGArgs struct {
|
||||||
BlockNumber int64
|
BlockNumber int64
|
||||||
}
|
}
|
||||||
|
@ -19,13 +19,6 @@ web3._extend({
|
|||||||
inputFormatter: [web3._extend.formatters.formatInputInt],
|
inputFormatter: [web3._extend.formatters.formatInputInt],
|
||||||
outputFormatter: web3._extend.formatters.formatOutputBool
|
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({
|
new web3._extend.Method({
|
||||||
name: 'setExtra',
|
name: 'setExtra',
|
||||||
call: 'miner_setExtra',
|
call: 'miner_setExtra',
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
var (
|
var (
|
||||||
// mapping between methods and handlers
|
// mapping between methods and handlers
|
||||||
netMapping = map[string]nethandler{
|
netMapping = map[string]nethandler{
|
||||||
"net_id": (*netApi).NetworkVersion,
|
"net_version": (*netApi).Version,
|
||||||
"net_peerCount": (*netApi).PeerCount,
|
"net_peerCount": (*netApi).PeerCount,
|
||||||
"net_listening": (*netApi).IsListening,
|
"net_listening": (*netApi).IsListening,
|
||||||
"net_peers": (*netApi).Peers,
|
"net_peers": (*netApi).Peers,
|
||||||
@ -63,7 +63,7 @@ func (self *netApi) Name() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Network version
|
// 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
|
return self.xeth.NetworkVersion(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,26 +12,12 @@ web3._extend({
|
|||||||
inputFormatter: [web3._extend.utils.formatInputString],
|
inputFormatter: [web3._extend.utils.formatInputString],
|
||||||
outputFormatter: web3._extend.formatters.formatOutputBool
|
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({
|
new web3._extend.Method({
|
||||||
name: 'getPeerCount',
|
name: 'getPeerCount',
|
||||||
call: 'net_peerCount',
|
call: 'net_peerCount',
|
||||||
params: 0,
|
params: 0,
|
||||||
inputFormatter: [],
|
inputFormatter: [],
|
||||||
outputFormatter: web3._extend.formatters.formatOutputString
|
outputFormatter: web3._extend.formatters.formatOutputString
|
||||||
}),
|
|
||||||
new web3._extend.Method({
|
|
||||||
name: 'peers',
|
|
||||||
call: 'net_peers',
|
|
||||||
params: 0,
|
|
||||||
inputFormatter: [],
|
|
||||||
outputFormatter: function(obj) { return obj; }
|
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
properties:
|
properties:
|
||||||
@ -45,6 +31,16 @@ web3._extend({
|
|||||||
name: 'peerCount',
|
name: 'peerCount',
|
||||||
getter: 'net_peerCount',
|
getter: 'net_peerCount',
|
||||||
outputFormatter: web3._extend.utils.toDecimal
|
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
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
@ -16,15 +16,18 @@ func (args *NewAccountArgs) UnmarshalJSON(b []byte) (err error) {
|
|||||||
return shared.NewDecodeParamError(err.Error())
|
return shared.NewDecodeParamError(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
passhrase, ok := obj[0].(string)
|
if len(obj) < 1 {
|
||||||
if !ok {
|
return shared.NewInsufficientParamsError(len(obj), 1)
|
||||||
return shared.NewInvalidTypeError("passhrase", "not a string")
|
|
||||||
}
|
}
|
||||||
args.Passphrase = passhrase
|
|
||||||
|
|
||||||
|
if passhrase, ok := obj[0].(string); ok {
|
||||||
|
args.Passphrase = passhrase
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return shared.NewInvalidTypeError("passhrase", "not a string")
|
||||||
|
}
|
||||||
|
|
||||||
type DeleteAccountArgs struct {
|
type DeleteAccountArgs struct {
|
||||||
Address string
|
Address string
|
||||||
Passphrase string
|
Passphrase string
|
||||||
@ -36,17 +39,21 @@ func (args *DeleteAccountArgs) UnmarshalJSON(b []byte) (err error) {
|
|||||||
return shared.NewDecodeParamError(err.Error())
|
return shared.NewDecodeParamError(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
addr, ok := obj[0].(string)
|
if len(obj) < 2 {
|
||||||
if !ok {
|
return shared.NewInsufficientParamsError(len(obj), 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
if addr, ok := obj[0].(string); ok {
|
||||||
|
args.Address = addr
|
||||||
|
} else {
|
||||||
return shared.NewInvalidTypeError("address", "not a string")
|
return shared.NewInvalidTypeError("address", "not a string")
|
||||||
}
|
}
|
||||||
args.Address = addr
|
|
||||||
|
|
||||||
passhrase, ok := obj[1].(string)
|
if passhrase, ok := obj[1].(string); ok {
|
||||||
if !ok {
|
args.Passphrase = passhrase
|
||||||
|
} else {
|
||||||
return shared.NewInvalidTypeError("passhrase", "not a string")
|
return shared.NewInvalidTypeError("passhrase", "not a string")
|
||||||
}
|
}
|
||||||
args.Passphrase = passhrase
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -65,17 +72,21 @@ func (args *UnlockAccountArgs) UnmarshalJSON(b []byte) (err error) {
|
|||||||
|
|
||||||
args.Duration = -1
|
args.Duration = -1
|
||||||
|
|
||||||
addrstr, ok := obj[0].(string)
|
if len(obj) < 2 {
|
||||||
if !ok {
|
return shared.NewInsufficientParamsError(len(obj), 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
if addrstr, ok := obj[0].(string); ok {
|
||||||
|
args.Address = addrstr
|
||||||
|
} else {
|
||||||
return shared.NewInvalidTypeError("address", "not a string")
|
return shared.NewInvalidTypeError("address", "not a string")
|
||||||
}
|
}
|
||||||
args.Address = addrstr
|
|
||||||
|
|
||||||
passphrasestr, ok := obj[1].(string)
|
if passphrasestr, ok := obj[1].(string); ok {
|
||||||
if !ok {
|
args.Passphrase = passphrasestr
|
||||||
|
} else {
|
||||||
return shared.NewInvalidTypeError("passphrase", "not a string")
|
return shared.NewInvalidTypeError("passphrase", "not a string")
|
||||||
}
|
}
|
||||||
args.Passphrase = passphrasestr
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,6 @@ web3._extend({
|
|||||||
property: 'personal',
|
property: 'personal',
|
||||||
methods:
|
methods:
|
||||||
[
|
[
|
||||||
new web3._extend.Method({
|
|
||||||
name: 'listAccounts',
|
|
||||||
call: 'personal_listAccounts',
|
|
||||||
params: 0,
|
|
||||||
inputFormatter: [],
|
|
||||||
outputFormatter: function(obj) { return obj; }
|
|
||||||
}),
|
|
||||||
new web3._extend.Method({
|
new web3._extend.Method({
|
||||||
name: 'newAccount',
|
name: 'newAccount',
|
||||||
call: 'personal_newAccount',
|
call: 'personal_newAccount',
|
||||||
@ -29,6 +22,11 @@ web3._extend({
|
|||||||
],
|
],
|
||||||
properties:
|
properties:
|
||||||
[
|
[
|
||||||
|
new web3._extend.Property({
|
||||||
|
name: 'accounts',
|
||||||
|
getter: 'personal_listAccounts',
|
||||||
|
outputFormatter: function(obj) { return obj; }
|
||||||
|
})
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
`
|
`
|
||||||
|
Loading…
Reference in New Issue
Block a user