aboutsummaryrefslogtreecommitdiffstats
path: root/rpc/api.go
diff options
context:
space:
mode:
Diffstat (limited to 'rpc/api.go')
-rw-r--r--rpc/api.go12
1 files changed, 8 insertions, 4 deletions
diff --git a/rpc/api.go b/rpc/api.go
index 05f4d0bc4..630fb32b5 100644
--- a/rpc/api.go
+++ b/rpc/api.go
@@ -176,7 +176,7 @@ func (self *EthereumApi) UninstallFilter(id int, reply *interface{}) error {
return nil
}
-func (self *EthereumApi) NewFilterString(args string, reply *interface{}) error {
+func (self *EthereumApi) NewFilterString(args *FilterStringArgs, reply *interface{}) error {
var id int
filter := core.NewFilter(self.xeth().Backend())
@@ -186,10 +186,14 @@ func (self *EthereumApi) NewFilterString(args string, reply *interface{}) error
self.logs[id].add(&state.StateLog{})
}
- if args == "pending" {
+
+ switch args.Word {
+ case "pending":
filter.PendingCallback = callback
- } else if args == "chain" {
+ case "latest":
filter.BlockCallback = callback
+ default:
+ return NewValidationError("Word", "Must be `latest` or `pending`")
}
id = self.filterManager.InstallFilter(filter)
@@ -692,7 +696,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
if err := json.Unmarshal(req.Params, &args); err != nil {
return err
}
- return p.NewFilterString(args.Word, reply)
+ return p.NewFilterString(args, reply)
case "eth_uninstallFilter":
args := new(FilterIdArgs)
if err := json.Unmarshal(req.Params, &args); err != nil {