Official Go implementation of the Ethereum protocol
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-ethereum/rpc/api/utils.go

200 lines
4.0 KiB

package api
import (
"strings"
"fmt"
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/rpc/codec"
"github.com/ethereum/go-ethereum/rpc/shared"
"github.com/ethereum/go-ethereum/xeth"
)
var (
// Mapping between the different methods each api supports
AutoCompletion = map[string][]string{
"admin": []string{
"addPeer",
"peers",
"nodeInfo",
"exportChain",
"importChain",
"verbosity",
"chainSyncStatus",
"setSolc",
"datadir",
"startRPC",
"stopRPC",
},
10 years ago
"db": []string{
"getString",
"putString",
"getHex",
"putHex",
},
"debug": []string{
"dumpBlock",
"getBlockRlp",
"printBlock",
"processBlock",
"seedHash",
"setHead",
},
"eth": []string{
"accounts",
"blockNumber",
"getBalance",
"protocolVersion",
"coinbase",
"mining",
"gasPrice",
"getStorage",
"storageAt",
"getStorageAt",
"getTransactionCount",
"getBlockTransactionCountByHash",
"getBlockTransactionCountByNumber",
"getUncleCountByBlockHash",
"getUncleCountByBlockNumber",
"getData",
"getCode",
"sign",
10 years ago
"sendRawTransaction",
"sendTransaction",
"transact",
"estimateGas",
"call",
"flush",
"getBlockByHash",
"getBlockByNumber",
"getTransactionByHash",
"getTransactionByBlockHashAndIndex",
"getUncleByBlockHashAndIndex",
"getUncleByBlockNumberAndIndex",
"getCompilers",
"compileSolidity",
"newFilter",
"newBlockFilter",
"newPendingTransactionFilter",
"uninstallFilter",
"getFilterChanges",
"getFilterLogs",
"getLogs",
"hashrate",
"getWork",
"submitWork",
"pendingTransactions",
10 years ago
"resend",
"getTransactionReceipt",
},
"miner": []string{
"hashrate",
"makeDAG",
"setExtra",
"setGasPrice",
"startAutoDAG",
"start",
"stopAutoDAG",
"stop",
},
"net": []string{
"peerCount",
"listening",
},
"personal": []string{
"listAccounts",
"newAccount",
"deleteAccount",
"unlockAccount",
},
"shh": []string{
"version",
"post",
"hasIdentity",
"newIdentity",
"newFilter",
"uninstallFilter",
"getFilterChanges",
},
"txpool": []string{
"status",
},
"web3": []string{
"sha3",
"version",
"fromWei",
"toWei",
"toHex",
"toAscii",
"fromAscii",
"toBigNumber",
"isAddress",
},
}
)
// Parse a comma separated API string to individual api's
func ParseApiString(apistr string, codec codec.Codec, xeth *xeth.XEth, eth *eth.Ethereum) ([]shared.EthereumApi, error) {
if len(strings.TrimSpace(apistr)) == 0 {
return nil, fmt.Errorf("Empty apistr provided")
}
names := strings.Split(apistr, ",")
apis := make([]shared.EthereumApi, len(names))
for i, name := range names {
switch strings.ToLower(strings.TrimSpace(name)) {
case shared.AdminApiName:
10 years ago
apis[i] = NewAdminApi(xeth, eth, codec)
case shared.DebugApiName:
10 years ago
apis[i] = NewDebugApi(xeth, eth, codec)
case shared.DbApiName:
10 years ago
apis[i] = NewDbApi(xeth, eth, codec)
case shared.EthApiName:
apis[i] = NewEthApi(xeth, eth, codec)
case shared.MinerApiName:
10 years ago
apis[i] = NewMinerApi(eth, codec)
case shared.NetApiName:
10 years ago
apis[i] = NewNetApi(xeth, eth, codec)
case shared.ShhApiName:
10 years ago
apis[i] = NewShhApi(xeth, eth, codec)
case shared.TxPoolApiName:
10 years ago
apis[i] = NewTxPoolApi(xeth, eth, codec)
case shared.PersonalApiName:
10 years ago
apis[i] = NewPersonalApi(xeth, eth, codec)
case shared.Web3ApiName:
10 years ago
apis[i] = NewWeb3Api(xeth, codec)
default:
return nil, fmt.Errorf("Unknown API '%s'", name)
}
}
return apis, nil
}
10 years ago
func Javascript(name string) string {
switch strings.ToLower(strings.TrimSpace(name)) {
case shared.AdminApiName:
10 years ago
return Admin_JS
case shared.DebugApiName:
10 years ago
return Debug_JS
case shared.DbApiName:
10 years ago
return Db_JS
case shared.EthApiName:
return Eth_JS
case shared.MinerApiName:
10 years ago
return Miner_JS
case shared.NetApiName:
10 years ago
return Net_JS
case shared.ShhApiName:
10 years ago
return Shh_JS
case shared.TxPoolApiName:
10 years ago
return TxPool_JS
case shared.PersonalApiName:
return Personal_JS
10 years ago
}
return ""
}