parsing events output
This commit is contained in:
		
							parent
							
								
									1860b3dff9
								
							
						
					
					
						commit
						a5909d82eb
					
				
							
								
								
									
										36
									
								
								dist/ethereum.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								dist/ethereum.js
									
									
									
									
										vendored
									
									
								
							| @ -391,6 +391,11 @@ var addFunctionsToContract = function (contract, desc, address) { | |||||||
| 
 | 
 | ||||||
| var addEventRelatedPropertiesToContract = function (contract, desc, address) { | var addEventRelatedPropertiesToContract = function (contract, desc, address) { | ||||||
|     contract.address = address; |     contract.address = address; | ||||||
|  |     contract._onWatchEventResult = function (data) { | ||||||
|  |         var matchingEvent = event.getMatchingEvent(utils.filterEvents(desc)); | ||||||
|  |         var parser = eventImpl.outputParser(matchingEvent); | ||||||
|  |         return parser(data); | ||||||
|  |     }; | ||||||
|      |      | ||||||
|     Object.defineProperty(contract, 'topic', { |     Object.defineProperty(contract, 'topic', { | ||||||
|         get: function() { |         get: function() { | ||||||
| @ -411,6 +416,10 @@ var addEventsToContract = function (contract, desc, address) { | |||||||
|             var signature = abi.eventSignatureFromAscii(e.name); |             var signature = abi.eventSignatureFromAscii(e.name); | ||||||
|             var event = eventImpl.inputParser(address, signature, e); |             var event = eventImpl.inputParser(address, signature, e); | ||||||
|             var o = event.apply(null, params); |             var o = event.apply(null, params); | ||||||
|  |             o._onWatchEventResult = function (data) { | ||||||
|  |                 var parser = eventImpl.outputParser(e); | ||||||
|  |                 return parser(data); | ||||||
|  |             }; | ||||||
|             return web3.eth.watch(o);   |             return web3.eth.watch(o);   | ||||||
|         }; |         }; | ||||||
|          |          | ||||||
| @ -571,14 +580,18 @@ var getArgumentsObject = function (inputs, indexed, notIndexed) { | |||||||
|     }, {});  |     }, {});  | ||||||
| }; | }; | ||||||
|   |   | ||||||
| 
 |  | ||||||
| var outputParser = function (event) { | var outputParser = function (event) { | ||||||
|      |      | ||||||
|     return function (output) { |     return function (output) { | ||||||
|         var result = { |         var result = { | ||||||
|             event: utils.extractDisplayName(event.name), |             event: utils.extractDisplayName(event.name), | ||||||
|             number: output.number |             number: output.number, | ||||||
|  |             args: {} | ||||||
|         }; |         }; | ||||||
|  | 
 | ||||||
|  |         if (!output.topic) { | ||||||
|  |             return result; | ||||||
|  |         } | ||||||
|         |         | ||||||
|         var indexedOutputs = filterInputs(event.inputs, true); |         var indexedOutputs = filterInputs(event.inputs, true); | ||||||
|         var indexedData = "0x" + output.topic.slice(1, output.topic.length).map(function (topic) { return topic.slice(2); }).join(""); |         var indexedData = "0x" + output.topic.slice(1, output.topic.length).map(function (topic) { return topic.slice(2); }).join(""); | ||||||
| @ -593,9 +606,21 @@ var outputParser = function (event) { | |||||||
|     }; |     }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | var getMatchingEvent = function (events, payload) { | ||||||
|  |     for (var i = 0; i < events.length; i++) { | ||||||
|  |         var signature = abi.eventSignatureFromAscii(events[i].name);  | ||||||
|  |         if (signature === payload.topic[0]) { | ||||||
|  |             return events[i]; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     return undefined; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| module.exports = { | module.exports = { | ||||||
|     inputParser: inputParser, |     inputParser: inputParser, | ||||||
|     outputParser: outputParser |     outputParser: outputParser, | ||||||
|  |     getMatchingEvent: getMatchingEvent | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -638,6 +663,8 @@ var Filter = function(options, impl) { | |||||||
|         if (options.topics) { |         if (options.topics) { | ||||||
|             console.warn('"topics" is deprecated, use "topic" instead'); |             console.warn('"topics" is deprecated, use "topic" instead'); | ||||||
|         } |         } | ||||||
|  |          | ||||||
|  |         this._onWatchResult = options._onWatchEventResult; | ||||||
| 
 | 
 | ||||||
|         // evaluate lazy properties
 |         // evaluate lazy properties
 | ||||||
|         options = { |         options = { | ||||||
| @ -673,7 +700,8 @@ Filter.prototype.changed = function(callback) { | |||||||
| Filter.prototype.trigger = function(messages) { | Filter.prototype.trigger = function(messages) { | ||||||
|     for (var i = 0; i < this.callbacks.length; i++) { |     for (var i = 0; i < this.callbacks.length; i++) { | ||||||
|         for (var j = 0; j < messages.length; j++) { |         for (var j = 0; j < messages.length; j++) { | ||||||
|             this.callbacks[i].call(this, messages[j]); |             var message = this._onWatchResult ? this._onWatchResult(messages[j]) : messages[j]; | ||||||
|  |             this.callbacks[i].call(this, message); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								dist/ethereum.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								dist/ethereum.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/ethereum.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/ethereum.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -120,6 +120,11 @@ var addFunctionsToContract = function (contract, desc, address) { | |||||||
| 
 | 
 | ||||||
| var addEventRelatedPropertiesToContract = function (contract, desc, address) { | var addEventRelatedPropertiesToContract = function (contract, desc, address) { | ||||||
|     contract.address = address; |     contract.address = address; | ||||||
|  |     contract._onWatchEventResult = function (data) { | ||||||
|  |         var matchingEvent = event.getMatchingEvent(utils.filterEvents(desc)); | ||||||
|  |         var parser = eventImpl.outputParser(matchingEvent); | ||||||
|  |         return parser(data); | ||||||
|  |     }; | ||||||
|      |      | ||||||
|     Object.defineProperty(contract, 'topic', { |     Object.defineProperty(contract, 'topic', { | ||||||
|         get: function() { |         get: function() { | ||||||
| @ -140,6 +145,10 @@ var addEventsToContract = function (contract, desc, address) { | |||||||
|             var signature = abi.eventSignatureFromAscii(e.name); |             var signature = abi.eventSignatureFromAscii(e.name); | ||||||
|             var event = eventImpl.inputParser(address, signature, e); |             var event = eventImpl.inputParser(address, signature, e); | ||||||
|             var o = event.apply(null, params); |             var o = event.apply(null, params); | ||||||
|  |             o._onWatchEventResult = function (data) { | ||||||
|  |                 var parser = eventImpl.outputParser(e); | ||||||
|  |                 return parser(data); | ||||||
|  |             }; | ||||||
|             return web3.eth.watch(o);   |             return web3.eth.watch(o);   | ||||||
|         }; |         }; | ||||||
|          |          | ||||||
|  | |||||||
							
								
								
									
										26
									
								
								lib/event.js
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								lib/event.js
									
									
									
									
									
								
							| @ -90,14 +90,18 @@ var getArgumentsObject = function (inputs, indexed, notIndexed) { | |||||||
|     }, {});  |     }, {});  | ||||||
| }; | }; | ||||||
|   |   | ||||||
| 
 |  | ||||||
| var outputParser = function (event) { | var outputParser = function (event) { | ||||||
|      |      | ||||||
|     return function (output) { |     return function (output) { | ||||||
|         var result = { |         var result = { | ||||||
|             event: utils.extractDisplayName(event.name), |             event: utils.extractDisplayName(event.name), | ||||||
|             number: output.number |             number: output.number, | ||||||
|  |             args: {} | ||||||
|         }; |         }; | ||||||
|  | 
 | ||||||
|  |         if (!output.topic) { | ||||||
|  |             return result; | ||||||
|  |         } | ||||||
|         |         | ||||||
|         var indexedOutputs = filterInputs(event.inputs, true); |         var indexedOutputs = filterInputs(event.inputs, true); | ||||||
|         var indexedData = "0x" + output.topic.slice(1, output.topic.length).map(function (topic) { return topic.slice(2); }).join(""); |         var indexedData = "0x" + output.topic.slice(1, output.topic.length).map(function (topic) { return topic.slice(2); }).join(""); | ||||||
| @ -112,8 +116,20 @@ var outputParser = function (event) { | |||||||
|     }; |     }; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| module.exports = { | var getMatchingEvent = function (events, payload) { | ||||||
|     inputParser: inputParser, |     for (var i = 0; i < events.length; i++) { | ||||||
|     outputParser: outputParser |         var signature = abi.eventSignatureFromAscii(events[i].name);  | ||||||
|  |         if (signature === payload.topic[0]) { | ||||||
|  |             return events[i]; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     return undefined; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | module.exports = { | ||||||
|  |     inputParser: inputParser, | ||||||
|  |     outputParser: outputParser, | ||||||
|  |     getMatchingEvent: getMatchingEvent | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -36,6 +36,8 @@ var Filter = function(options, impl) { | |||||||
|         if (options.topics) { |         if (options.topics) { | ||||||
|             console.warn('"topics" is deprecated, use "topic" instead'); |             console.warn('"topics" is deprecated, use "topic" instead'); | ||||||
|         } |         } | ||||||
|  |          | ||||||
|  |         this._onWatchResult = options._onWatchEventResult; | ||||||
| 
 | 
 | ||||||
|         // evaluate lazy properties
 |         // evaluate lazy properties
 | ||||||
|         options = { |         options = { | ||||||
| @ -71,7 +73,8 @@ Filter.prototype.changed = function(callback) { | |||||||
| Filter.prototype.trigger = function(messages) { | Filter.prototype.trigger = function(messages) { | ||||||
|     for (var i = 0; i < this.callbacks.length; i++) { |     for (var i = 0; i < this.callbacks.length; i++) { | ||||||
|         for (var j = 0; j < messages.length; j++) { |         for (var j = 0; j < messages.length; j++) { | ||||||
|             this.callbacks[i].call(this, messages[j]); |             var message = this._onWatchResult ? this._onWatchResult(messages[j]) : messages[j]; | ||||||
|  |             this.callbacks[i].call(this, message); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user