197 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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",
 | 
						|
		},
 | 
						|
		"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",
 | 
						|
			"sendRawTransaction",
 | 
						|
			"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) ([]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:
 | 
						|
			apis[i] = NewAdminApi(xeth, eth, codec)
 | 
						|
		case shared.DebugApiName:
 | 
						|
			apis[i] = NewDebugApi(xeth, eth, codec)
 | 
						|
		case shared.DbApiName:
 | 
						|
			apis[i] = NewDbApi(xeth, eth, codec)
 | 
						|
		case shared.EthApiName:
 | 
						|
			apis[i] = NewEthApi(xeth, codec)
 | 
						|
		case shared.MinerApiName:
 | 
						|
			apis[i] = NewMinerApi(eth, codec)
 | 
						|
		case shared.NetApiName:
 | 
						|
			apis[i] = NewNetApi(xeth, eth, codec)
 | 
						|
		case shared.ShhApiName:
 | 
						|
			apis[i] = NewShhApi(xeth, eth, codec)
 | 
						|
		case shared.TxPoolApiName:
 | 
						|
			apis[i] = NewTxPoolApi(xeth, eth, codec)
 | 
						|
		case shared.PersonalApiName:
 | 
						|
			apis[i] = NewPersonalApi(xeth, eth, codec)
 | 
						|
		case shared.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 shared.AdminApiName:
 | 
						|
		return Admin_JS
 | 
						|
	case shared.DebugApiName:
 | 
						|
		return Debug_JS
 | 
						|
	case shared.DbApiName:
 | 
						|
		return Db_JS
 | 
						|
	case shared.EthApiName:
 | 
						|
		return Eth_JS
 | 
						|
	case shared.MinerApiName:
 | 
						|
		return Miner_JS
 | 
						|
	case shared.NetApiName:
 | 
						|
		return Net_JS
 | 
						|
	case shared.ShhApiName:
 | 
						|
		return Shh_JS
 | 
						|
	case shared.TxPoolApiName:
 | 
						|
		return TxPool_JS
 | 
						|
	case shared.PersonalApiName:
 | 
						|
		return Personal_JS
 | 
						|
	}
 | 
						|
 | 
						|
	return ""
 | 
						|
}
 |