aboutsummaryrefslogtreecommitdiffstats
path: root/rpc/api/utils.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-06-11 22:41:43 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-06-11 22:41:43 +0800
commite2c2d8e15ebef85c77f7486f92c6430ca6f30785 (patch)
tree1cd237e5aba5453c641a8d631cffd96c9eb08757 /rpc/api/utils.go
parent6609d45ef48ce1c2d2b0e73fa8fe5190d36e3920 (diff)
parentb3c07f167f8b82d1079abe6e15cd1f480712b030 (diff)
downloaddexon-e2c2d8e15ebef85c77f7486f92c6430ca6f30785.tar
dexon-e2c2d8e15ebef85c77f7486f92c6430ca6f30785.tar.gz
dexon-e2c2d8e15ebef85c77f7486f92c6430ca6f30785.tar.bz2
dexon-e2c2d8e15ebef85c77f7486f92c6430ca6f30785.tar.lz
dexon-e2c2d8e15ebef85c77f7486f92c6430ca6f30785.tar.xz
dexon-e2c2d8e15ebef85c77f7486f92c6430ca6f30785.tar.zst
dexon-e2c2d8e15ebef85c77f7486f92c6430ca6f30785.zip
Merge pull request #1239 from bas-vk/rpc-apis
RPC refactoring
Diffstat (limited to 'rpc/api/utils.go')
-rw-r--r--rpc/api/utils.go180
1 files changed, 180 insertions, 0 deletions
diff --git a/rpc/api/utils.go b/rpc/api/utils.go
new file mode 100644
index 000000000..318d7c39b
--- /dev/null
+++ b/rpc/api/utils.go
@@ -0,0 +1,180 @@
+package api
+
+import (
+ "strings"
+
+ "fmt"
+
+ "github.com/ethereum/go-ethereum/eth"
+ "github.com/ethereum/go-ethereum/rpc/codec"
+ "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",
+ },
+ "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",
+ "sendTransaction",
+ "transact",
+ "estimateGas",
+ "call",
+ "flush",
+ "getBlockByHash",
+ "getBlockByNumber",
+ "getTransactionByHash",
+ "getTransactionByBlockHashAndIndex",
+ "getUncleByBlockHashAndIndex",
+ "getUncleByBlockNumberAndIndex",
+ "getCompilers",
+ "compileSolidity",
+ "newFilter",
+ "newBlockFilter",
+ "newPendingTransactionFilter",
+ "uninstallFilter",
+ "getFilterChanges",
+ "getFilterLogs",
+ "getLogs",
+ "hashrate",
+ "getWork",
+ "submitWork",
+ },
+ "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) ([]EthereumApi, error) {
+ if len(strings.TrimSpace(apistr)) == 0 {
+ return nil, fmt.Errorf("Empty apistr provided")
+ }
+
+ names := strings.Split(apistr, ",")
+ apis := make([]EthereumApi, len(names))
+
+ for i, name := range names {
+ switch strings.ToLower(strings.TrimSpace(name)) {
+ case AdminApiName:
+ apis[i] = NewAdminApi(xeth, eth, codec)
+ case DebugApiName:
+ apis[i] = NewDebugApi(xeth, eth, codec)
+ case EthApiName:
+ apis[i] = NewEthApi(xeth, codec)
+ case MinerApiName:
+ apis[i] = NewMinerApi(eth, codec)
+ case NetApiName:
+ apis[i] = NewNetApi(xeth, eth, codec)
+ case ShhApiName:
+ apis[i] = NewShhApi(xeth, eth, codec)
+ case TxPoolApiName:
+ apis[i] = NewTxPoolApi(xeth, eth, codec)
+ case PersonalApiName:
+ apis[i] = NewPersonalApi(xeth, eth, codec)
+ case Web3ApiName:
+ apis[i] = NewWeb3Api(xeth, codec)
+ default:
+ return nil, fmt.Errorf("Unknown API '%s'", name)
+ }
+ }
+
+ return apis, nil
+}
+
+func Javascript(name string) string {
+ switch strings.ToLower(strings.TrimSpace(name)) {
+ case AdminApiName:
+ return Admin_JS
+ case DebugApiName:
+ return Debug_JS
+ case MinerApiName:
+ return Miner_JS
+ case NetApiName:
+ return Net_JS
+ case ShhApiName:
+ return Shh_JS
+ case TxPoolApiName:
+ return TxPool_JS
+ case PersonalApiName:
+ return Personal_JS
+ }
+
+ return ""
+}