| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | package ui | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2014-12-04 10:28:02 +01:00
										 |  |  | 	"github.com/ethereum/go-ethereum/core" | 
					
						
							| 
									
										
										
										
											2014-10-23 15:01:27 +02:00
										 |  |  | 	"github.com/ethereum/go-ethereum/ethutil" | 
					
						
							| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-10 00:51:56 +01:00
										 |  |  | func fromHex(s string) []byte { | 
					
						
							|  |  |  | 	if len(s) > 1 { | 
					
						
							|  |  |  | 		if s[0:2] == "0x" { | 
					
						
							|  |  |  | 			s = s[2:] | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return ethutil.Hex2Bytes(s) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-17 12:24:51 +01:00
										 |  |  | func NewFilterFromMap(object map[string]interface{}, eth core.Backend) *core.Filter { | 
					
						
							| 
									
										
										
										
											2014-12-04 10:28:02 +01:00
										 |  |  | 	filter := core.NewFilter(eth) | 
					
						
							| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	if object["earliest"] != nil { | 
					
						
							|  |  |  | 		val := ethutil.NewValue(object["earliest"]) | 
					
						
							|  |  |  | 		filter.SetEarliestBlock(val.Int()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if object["latest"] != nil { | 
					
						
							|  |  |  | 		val := ethutil.NewValue(object["latest"]) | 
					
						
							|  |  |  | 		filter.SetLatestBlock(val.Int()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-28 10:23:18 +01:00
										 |  |  | 	if object["address"] != nil { | 
					
						
							| 
									
										
										
										
											2015-02-17 16:12:55 +01:00
										 |  |  | 		//val := ethutil.NewValue(object["address"]) | 
					
						
							|  |  |  | 		//filter.SetAddress(fromHex(val.Str())) | 
					
						
							| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if object["max"] != nil { | 
					
						
							|  |  |  | 		val := ethutil.NewValue(object["max"]) | 
					
						
							|  |  |  | 		filter.SetMax(int(val.Uint())) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if object["skip"] != nil { | 
					
						
							|  |  |  | 		val := ethutil.NewValue(object["skip"]) | 
					
						
							|  |  |  | 		filter.SetSkip(int(val.Uint())) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-28 10:23:18 +01:00
										 |  |  | 	if object["topics"] != nil { | 
					
						
							|  |  |  | 		filter.SetTopics(MakeTopics(object["topics"])) | 
					
						
							| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return filter | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Conversion methodn | 
					
						
							| 
									
										
										
										
											2014-12-04 10:28:02 +01:00
										 |  |  | func mapToAccountChange(m map[string]interface{}) (d core.AccountChange) { | 
					
						
							| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | 	if str, ok := m["id"].(string); ok { | 
					
						
							| 
									
										
										
										
											2015-01-10 00:51:56 +01:00
										 |  |  | 		d.Address = fromHex(str) | 
					
						
							| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if str, ok := m["at"].(string); ok { | 
					
						
							| 
									
										
										
										
											2015-01-10 00:51:56 +01:00
										 |  |  | 		d.StateAddress = fromHex(str) | 
					
						
							| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // data can come in in the following formats: | 
					
						
							|  |  |  | // ["aabbccdd", {id: "ccddee", at: "11223344"}], "aabbcc", {id: "ccddee", at: "1122"} | 
					
						
							| 
									
										
										
										
											2015-01-28 10:23:18 +01:00
										 |  |  | func MakeTopics(v interface{}) (d [][]byte) { | 
					
						
							| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | 	if str, ok := v.(string); ok { | 
					
						
							| 
									
										
										
										
											2015-01-28 10:23:18 +01:00
										 |  |  | 		d = append(d, fromHex(str)) | 
					
						
							|  |  |  | 	} else if slice, ok := v.([]string); ok { | 
					
						
							| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | 		for _, item := range slice { | 
					
						
							| 
									
										
										
										
											2015-01-28 10:23:18 +01:00
										 |  |  | 			d = append(d, fromHex(item)) | 
					
						
							| 
									
										
										
										
											2014-10-18 13:20:06 +02:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return | 
					
						
							|  |  |  | } |