aboutsummaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
Diffstat (limited to 'rpc')
-rw-r--r--rpc/api.go16
-rw-r--r--rpc/args.go17
2 files changed, 15 insertions, 18 deletions
diff --git a/rpc/api.go b/rpc/api.go
index 617e4998d..dc0945d19 100644
--- a/rpc/api.go
+++ b/rpc/api.go
@@ -665,10 +665,20 @@ func toFilterOptions(options *FilterOptions) core.FilterOptions {
opts.Earliest = options.Earliest
opts.Latest = options.Latest
- opts.Topics = make([][][]byte, len(options.Topic))
- for i, topic := range options.Topic {
- opts.Topics[i] = fromHex(topic)
+
+ topics := make([][][]byte, len(options.Topics))
+ for i, topicDat := range options.Topics {
+ if slice, ok := topicDat.([]interface{}); ok {
+ topics[i] = make([][]byte, len(slice))
+ for j, topic := range slice {
+ topics[i][j] = fromHex(topic.(string))
+ }
+ } else if str, ok := topicDat.(string); ok {
+ topics[i] = make([][]byte, 1)
+ topics[i][0] = fromHex(str)
+ }
}
+ opts.Topics = topics
return opts
}
diff --git a/rpc/args.go b/rpc/args.go
index d34cfb2fa..63969e598 100644
--- a/rpc/args.go
+++ b/rpc/args.go
@@ -333,7 +333,7 @@ type FilterOptions struct {
Earliest int64
Latest int64
Address interface{}
- Topic []interface{}
+ Topics []interface{}
Skip int
Max int
}
@@ -360,20 +360,7 @@ func (args *FilterOptions) UnmarshalJSON(b []byte) (err error) {
args.Max = int(ethutil.Big(obj[0].Limit).Int64())
args.Skip = int(ethutil.Big(obj[0].Offset).Int64())
args.Address = obj[0].Address
-
- topics := make([][][]byte, len(obj[0].Topics))
- for i, topicDat := range obj[0].Topics {
- if slice, ok := topicDat.([]interface{}); ok {
- topics[i] = make([][]byte, len(slice))
- for j, topic := range slice {
- topics[i][j] = fromHex(topic.(string))
- }
- } else if str, ok := topicDat.(string); ok {
- topics[i] = make([][]byte, 1)
- topics[i][0] = fromHex(str)
- }
- }
- args.Topics = topics
+ args.Topics = obj[0].Topics
return nil
}