forked from cerc-io/plugeth
Fix eth_newBlockFilter
This commit is contained in:
parent
d4ed66c83d
commit
0932f84383
12
rpc/api.go
12
rpc/api.go
@ -176,7 +176,7 @@ func (self *EthereumApi) UninstallFilter(id int, reply *interface{}) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *EthereumApi) NewFilterString(args string, reply *interface{}) error {
|
func (self *EthereumApi) NewFilterString(args *FilterStringArgs, reply *interface{}) error {
|
||||||
var id int
|
var id int
|
||||||
filter := core.NewFilter(self.xeth().Backend())
|
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{})
|
self.logs[id].add(&state.StateLog{})
|
||||||
}
|
}
|
||||||
if args == "pending" {
|
|
||||||
|
switch args.Word {
|
||||||
|
case "pending":
|
||||||
filter.PendingCallback = callback
|
filter.PendingCallback = callback
|
||||||
} else if args == "chain" {
|
case "latest":
|
||||||
filter.BlockCallback = callback
|
filter.BlockCallback = callback
|
||||||
|
default:
|
||||||
|
return NewValidationError("Word", "Must be `latest` or `pending`")
|
||||||
}
|
}
|
||||||
|
|
||||||
id = self.filterManager.InstallFilter(filter)
|
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 {
|
if err := json.Unmarshal(req.Params, &args); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return p.NewFilterString(args.Word, reply)
|
return p.NewFilterString(args, reply)
|
||||||
case "eth_uninstallFilter":
|
case "eth_uninstallFilter":
|
||||||
args := new(FilterIdArgs)
|
args := new(FilterIdArgs)
|
||||||
if err := json.Unmarshal(req.Params, &args); err != nil {
|
if err := json.Unmarshal(req.Params, &args); err != nil {
|
||||||
|
@ -503,7 +503,7 @@ type FilterStringArgs struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (args *FilterStringArgs) UnmarshalJSON(b []byte) (err error) {
|
func (args *FilterStringArgs) UnmarshalJSON(b []byte) (err error) {
|
||||||
var obj []string
|
var obj []interface{}
|
||||||
r := bytes.NewReader(b)
|
r := bytes.NewReader(b)
|
||||||
if err := json.NewDecoder(r).Decode(&obj); err != nil {
|
if err := json.NewDecoder(r).Decode(&obj); err != nil {
|
||||||
return NewDecodeParamError(err.Error())
|
return NewDecodeParamError(err.Error())
|
||||||
@ -513,7 +513,12 @@ func (args *FilterStringArgs) UnmarshalJSON(b []byte) (err error) {
|
|||||||
return NewInsufficientParamsError(len(obj), 1)
|
return NewInsufficientParamsError(len(obj), 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
args.Word = obj[0]
|
var argstr string
|
||||||
|
argstr, ok := obj[0].(string)
|
||||||
|
if !ok {
|
||||||
|
return NewDecodeParamError("Filter is not a string")
|
||||||
|
}
|
||||||
|
args.Word = argstr
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user