aboutsummaryrefslogtreecommitdiffstats
path: root/rpc/api/utils.go
diff options
context:
space:
mode:
Diffstat (limited to 'rpc/api/utils.go')
-rw-r--r--rpc/api/utils.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/rpc/api/utils.go b/rpc/api/utils.go
new file mode 100644
index 000000000..76f00c251
--- /dev/null
+++ b/rpc/api/utils.go
@@ -0,0 +1,36 @@
+package api
+
+import (
+ "strings"
+
+ "fmt"
+
+ "github.com/ethereum/go-ethereum/eth"
+ "github.com/ethereum/go-ethereum/rpc/codec"
+ "github.com/ethereum/go-ethereum/xeth"
+)
+
+const (
+ EthApiName = "eth"
+)
+
+// 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 EthApiName:
+ apis[i] = NewEthApi(xeth, codec)
+ default:
+ return nil, fmt.Errorf("Unknown API '%s'", name)
+ }
+ }
+
+ return apis, nil
+}