aboutsummaryrefslogtreecommitdiffstats
path: root/rpc/api/api.go
diff options
context:
space:
mode:
Diffstat (limited to 'rpc/api/api.go')
-rw-r--r--rpc/api/api.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/rpc/api/api.go b/rpc/api/api.go
new file mode 100644
index 000000000..e431e5c1e
--- /dev/null
+++ b/rpc/api/api.go
@@ -0,0 +1,48 @@
+package api
+
+import (
+ "strings"
+
+ "github.com/ethereum/go-ethereum/rpc/shared"
+)
+
+const (
+ AdminApiName = "admin"
+ EthApiName = "eth"
+ DebugApiName = "debug"
+ MergedApiName = "merged"
+ MinerApiName = "miner"
+ NetApiName = "net"
+ ShhApiName = "shh"
+ TxPoolApiName = "txpool"
+ PersonalApiName = "personal"
+ Web3ApiName = "web3"
+)
+
+var (
+ // List with all API's which are offered over the IPC interface by default
+ DefaultIpcApis = strings.Join([]string{
+ AdminApiName, EthApiName, DebugApiName, MinerApiName, NetApiName,
+ ShhApiName, TxPoolApiName, PersonalApiName, Web3ApiName,
+ }, ",")
+)
+
+// Ethereum RPC API interface
+type EthereumApi interface {
+ // API identifier
+ Name() string
+
+ // API version
+ ApiVersion() string
+
+ // Execute the given request and returns the response or an error
+ Execute(*shared.Request) (interface{}, error)
+
+ // List of supported RCP methods this API provides
+ Methods() []string
+}
+
+// Merge multiple API's to a single API instance
+func Merge(apis ...EthereumApi) EthereumApi {
+ return newMergedApi(apis...)
+}