good morning!!!!

Skip to content
Snippets Groups Projects
Commit eb433731 authored by Jeffrey Wilcke's avatar Jeffrey Wilcke
Browse files

Fixed filter and refactored code

parent 98f970ba
No related branches found
No related tags found
No related merge requests found
......@@ -4,8 +4,8 @@ import (
"math"
"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/types"
)
type AccountChange struct {
......
......@@ -3,6 +3,8 @@ package rpc
import (
"bytes"
"encoding/json"
"errors"
"fmt"
"math/big"
"github.com/ethereum/go-ethereum/common"
......@@ -442,6 +444,26 @@ type BlockFilterArgs struct {
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) {
var obj []struct {
FromBlock interface{} `json:"fromBlock"`
......@@ -460,30 +482,13 @@ func (args *BlockFilterArgs) UnmarshalJSON(b []byte) (err error) {
return NewInsufficientParamsError(len(obj), 1)
}
fromstr, ok := obj[0].FromBlock.(string)
if !ok {
return NewDecodeParamError("FromBlock is not a string")
args.Earliest, err = toNumber(obj[0].FromBlock)
if err != nil {
return NewDecodeParamError(fmt.Sprintf("FromBlock %v", err))
}
switch fromstr {
case "latest":
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.Latest, err = toNumber(obj[0].FromBlock)
if err != nil {
return NewDecodeParamError(fmt.Sprintf("ToBlock %v", err))
}
args.Max = int(common.Big(obj[0].Limit).Int64())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment