forked from cerc-io/plugeth
Fixed filter and refactored code
This commit is contained in:
parent
98f970ba59
commit
eb433731aa
@ -4,8 +4,8 @@ import (
|
|||||||
"math"
|
"math"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/core/types"
|
|
||||||
"github.com/ethereum/go-ethereum/core/state"
|
"github.com/ethereum/go-ethereum/core/state"
|
||||||
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AccountChange struct {
|
type AccountChange struct {
|
||||||
|
51
rpc/args.go
51
rpc/args.go
@ -3,6 +3,8 @@ package rpc
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
@ -442,6 +444,26 @@ type BlockFilterArgs struct {
|
|||||||
Max int
|
Max int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func toNumber(v interface{}) (int64, error) {
|
||||||
|
var str string
|
||||||
|
if v != nil {
|
||||||
|
var ok bool
|
||||||
|
str, ok = v.(string)
|
||||||
|
if !ok {
|
||||||
|
return 0, errors.New("is not a string or undefined")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
str = "latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
switch str {
|
||||||
|
case "latest":
|
||||||
|
return -1, nil
|
||||||
|
default:
|
||||||
|
return int64(common.Big(v.(string)).Int64()), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (args *BlockFilterArgs) UnmarshalJSON(b []byte) (err error) {
|
func (args *BlockFilterArgs) UnmarshalJSON(b []byte) (err error) {
|
||||||
var obj []struct {
|
var obj []struct {
|
||||||
FromBlock interface{} `json:"fromBlock"`
|
FromBlock interface{} `json:"fromBlock"`
|
||||||
@ -460,30 +482,13 @@ func (args *BlockFilterArgs) UnmarshalJSON(b []byte) (err error) {
|
|||||||
return NewInsufficientParamsError(len(obj), 1)
|
return NewInsufficientParamsError(len(obj), 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
fromstr, ok := obj[0].FromBlock.(string)
|
args.Earliest, err = toNumber(obj[0].FromBlock)
|
||||||
if !ok {
|
if err != nil {
|
||||||
return NewDecodeParamError("FromBlock is not a string")
|
return NewDecodeParamError(fmt.Sprintf("FromBlock %v", err))
|
||||||
}
|
}
|
||||||
|
args.Latest, err = toNumber(obj[0].FromBlock)
|
||||||
switch fromstr {
|
if err != nil {
|
||||||
case "latest":
|
return NewDecodeParamError(fmt.Sprintf("ToBlock %v", err))
|
||||||
args.Earliest = -1
|
|
||||||
default:
|
|
||||||
args.Earliest = int64(common.Big(obj[0].FromBlock.(string)).Int64())
|
|
||||||
}
|
|
||||||
|
|
||||||
tostr, ok := obj[0].ToBlock.(string)
|
|
||||||
if !ok {
|
|
||||||
return NewDecodeParamError("ToBlock is not a string")
|
|
||||||
}
|
|
||||||
|
|
||||||
switch tostr {
|
|
||||||
case "latest":
|
|
||||||
args.Latest = -1
|
|
||||||
case "pending":
|
|
||||||
args.Latest = -2
|
|
||||||
default:
|
|
||||||
args.Latest = int64(common.Big(obj[0].ToBlock.(string)).Int64())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
args.Max = int(common.Big(obj[0].Limit).Int64())
|
args.Max = int(common.Big(obj[0].Limit).Int64())
|
||||||
|
Loading…
Reference in New Issue
Block a user