From 0d2cccc2ce88753a22ed60b74f50a376750d6483 Mon Sep 17 00:00:00 2001 From: Marek Kotewicz Date: Wed, 21 Jan 2015 20:29:02 +0100 Subject: http sync api --- lib/web3.js | 96 +++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 61 insertions(+), 35 deletions(-) (limited to 'lib/web3.js') diff --git a/lib/web3.js b/lib/web3.js index f071eea49..58bcc0c3f 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -169,22 +169,32 @@ var shhWatchMethods = function () { var setupMethods = function (obj, methods) { methods.forEach(function (method) { obj[method.name] = function () { - return flattenPromise(Array.prototype.slice.call(arguments)).then(function (args) { - var call = typeof method.call === "function" ? method.call(args) : method.call; - return {call: call, args: args}; - }).then(function (request) { - return new Promise(function (resolve, reject) { - web3.provider.send(request, function (err, result) { - if (!err) { - resolve(result); - return; - } - reject(err); - }); - }); - }).catch(function(err) { - console.error(err); + var args = Array.prototype.slice.call(arguments); + var call = typeof method.call === 'function' ? method.call(args) : method.call; + var result = web3.provider.send({ + call: call, + args: args }); + + result = JSON.parse(result); + return result.result; + + //return flattenPromise(Array.prototype.slice.call(arguments)).then(function (args) { + //var call = typeof method.call === "function" ? method.call(args) : method.call; + //return {call: call, args: args}; + //}).then(function (request) { + //return new Promise(function (resolve, reject) { + //web3.provider.send(request, function (err, result) { + //if (!err) { + //resolve(result); + //return; + //} + //reject(err); + //}); + //}); + //}).catch(function(err) { + //console.error(err); + //}); }; }); }; @@ -195,31 +205,47 @@ var setupProperties = function (obj, properties) { properties.forEach(function (property) { var proto = {}; proto.get = function () { - return new Promise(function(resolve, reject) { - web3.provider.send({call: property.getter}, function(err, result) { - if (!err) { - resolve(result); - return; - } - reject(err); - }); + var result = web3.provider.send({ + call: property.getter }); + + result = JSON.parse(result); + return result.result; + + + //return new Promise(function(resolve, reject) { + //web3.provider.send({call: property.getter}, function(err, result) { + //if (!err) { + //resolve(result); + //return; + //} + //reject(err); + //}); + //}); }; if (property.setter) { proto.set = function (val) { - return flattenPromise([val]).then(function (args) { - return new Promise(function (resolve) { - web3.provider.send({call: property.setter, args: args}, function (err, result) { - if (!err) { - resolve(result); - return; - } - reject(err); - }); - }); - }).catch(function (err) { - console.error(err); + var result = web3.provider.send({ + call: property.setter, + args: [val] }); + + result = JSON.parse(result); + return result.result; + + //return flattenPromise([val]).then(function (args) { + //return new Promise(function (resolve) { + //web3.provider.send({call: property.setter, args: args}, function (err, result) { + //if (!err) { + //resolve(result); + //return; + //} + //reject(err); + //}); + //}); + //}).catch(function (err) { + //console.error(err); + //}); }; } Object.defineProperty(obj, property.name, proto); -- cgit v1.2.3 From ceb4357a8d66e5112369293b15247f03c561c514 Mon Sep 17 00:00:00 2001 From: Marek Kotewicz Date: Wed, 21 Jan 2015 20:43:20 +0100 Subject: sync api tests running, removed unused pieces of code --- lib/web3.js | 81 ------------------------------------------------------------- 1 file changed, 81 deletions(-) (limited to 'lib/web3.js') diff --git a/lib/web3.js b/lib/web3.js index 58bcc0c3f..166bf68de 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -23,48 +23,6 @@ * @date 2014 */ -/// Recursively resolves all promises in given object and replaces the resolved values with promises -/// @param any object/array/promise/anything else.. -/// @returns (resolves) object with replaced promises with their result -function flattenPromise (obj) { - if (obj instanceof Promise) { - return Promise.resolve(obj); - } - - if (obj instanceof Array) { - return new Promise(function (resolve) { - var promises = obj.map(function (o) { - return flattenPromise(o); - }); - - return Promise.all(promises).then(function (res) { - for (var i = 0; i < obj.length; i++) { - obj[i] = res[i]; - } - resolve(obj); - }); - }); - } - - if (obj instanceof Object) { - return new Promise(function (resolve) { - var keys = Object.keys(obj); - var promises = keys.map(function (key) { - return flattenPromise(obj[key]); - }); - - return Promise.all(promises).then(function (res) { - for (var i = 0; i < keys.length; i++) { - obj[keys[i]] = res[i]; - } - resolve(obj); - }); - }); - } - - return Promise.resolve(obj); -} - /// @returns an array of objects describing web3 api methods var web3Methods = function () { return [ @@ -179,22 +137,6 @@ var setupMethods = function (obj, methods) { result = JSON.parse(result); return result.result; - //return flattenPromise(Array.prototype.slice.call(arguments)).then(function (args) { - //var call = typeof method.call === "function" ? method.call(args) : method.call; - //return {call: call, args: args}; - //}).then(function (request) { - //return new Promise(function (resolve, reject) { - //web3.provider.send(request, function (err, result) { - //if (!err) { - //resolve(result); - //return; - //} - //reject(err); - //}); - //}); - //}).catch(function(err) { - //console.error(err); - //}); }; }); }; @@ -212,16 +154,6 @@ var setupProperties = function (obj, properties) { result = JSON.parse(result); return result.result; - - //return new Promise(function(resolve, reject) { - //web3.provider.send({call: property.getter}, function(err, result) { - //if (!err) { - //resolve(result); - //return; - //} - //reject(err); - //}); - //}); }; if (property.setter) { proto.set = function (val) { @@ -233,19 +165,6 @@ var setupProperties = function (obj, properties) { result = JSON.parse(result); return result.result; - //return flattenPromise([val]).then(function (args) { - //return new Promise(function (resolve) { - //web3.provider.send({call: property.setter, args: args}, function (err, result) { - //if (!err) { - //resolve(result); - //return; - //} - //reject(err); - //}); - //}); - //}).catch(function (err) { - //console.error(err); - //}); }; } Object.defineProperty(obj, property.name, proto); -- cgit v1.2.3 From 08e26966275d5d0d7186bf734842e5da59a5bec9 Mon Sep 17 00:00:00 2001 From: Marek Kotewicz Date: Wed, 21 Jan 2015 21:22:05 +0100 Subject: removed send queues from providermanager --- lib/web3.js | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) (limited to 'lib/web3.js') diff --git a/lib/web3.js b/lib/web3.js index 166bf68de..515c8c37b 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -129,14 +129,10 @@ var setupMethods = function (obj, methods) { obj[method.name] = function () { var args = Array.prototype.slice.call(arguments); var call = typeof method.call === 'function' ? method.call(args) : method.call; - var result = web3.provider.send({ + return web3.provider.send({ call: call, args: args }); - - result = JSON.parse(result); - return result.result; - }; }); }; @@ -147,24 +143,17 @@ var setupProperties = function (obj, properties) { properties.forEach(function (property) { var proto = {}; proto.get = function () { - var result = web3.provider.send({ + return web3.provider.send({ call: property.getter }); - - result = JSON.parse(result); - return result.result; - }; + if (property.setter) { proto.set = function (val) { - var result = web3.provider.send({ + return web3.provider.send({ call: property.setter, args: [val] }); - - result = JSON.parse(result); - return result.result; - }; } Object.defineProperty(obj, property.name, proto); @@ -172,6 +161,7 @@ var setupProperties = function (obj, properties) { }; // TODO: import from a dependency, don't duplicate. +// TODO: use bignumber for that! var hexToDec = function (hex) { return parseInt(hex, 16).toString(); }; @@ -330,9 +320,8 @@ var shhWatch = { setupMethods(shhWatch, shhWatchMethods()); web3.setProvider = function(provider) { - provider.onmessage = messageHandler; + //provider.onmessage = messageHandler; // there will be no async calls, to remove web3.provider.set(provider); - web3.provider.sendQueued(); }; /// callled when there is new incoming message -- cgit v1.2.3 From 81a58132709b683a61cbde3dab93bbeb11d8debb Mon Sep 17 00:00:00 2001 From: Marek Kotewicz Date: Wed, 21 Jan 2015 21:24:40 +0100 Subject: removed unused pieces of code --- lib/web3.js | 45 --------------------------------------------- 1 file changed, 45 deletions(-) (limited to 'lib/web3.js') diff --git a/lib/web3.js b/lib/web3.js index 515c8c37b..cfe06763d 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -265,35 +265,6 @@ var web3 = { } }, - /// used by filter to register callback with given id - on: function(event, id, cb) { - if(web3._events[event] === undefined) { - web3._events[event] = {}; - } - - web3._events[event][id] = cb; - return this; - }, - - /// used by filter to unregister callback with given id - off: function(event, id) { - if(web3._events[event] !== undefined) { - delete web3._events[event][id]; - } - - return this; - }, - - /// used to trigger callback registered by filter - trigger: function(event, id, data) { - var callbacks = web3._events[event]; - if (!callbacks || !callbacks[id]) { - return; - } - var cb = callbacks[id]; - cb(data); - }, - /// @returns true if provider is installed haveProvider: function() { return !!web3.provider.provider; @@ -324,21 +295,5 @@ web3.setProvider = function(provider) { web3.provider.set(provider); }; -/// callled when there is new incoming message -function messageHandler(data) { - if(data._event !== undefined) { - web3.trigger(data._event, data._id, data.data); - return; - } - - if(data._id) { - var cb = web3._callbacks[data._id]; - if (cb) { - cb.call(this, data.error, data.data); - delete web3._callbacks[data._id]; - } - } -} - module.exports = web3; -- cgit v1.2.3 From c2d9c1a6f12822a08300bbafb66227d8d33ae73b Mon Sep 17 00:00:00 2001 From: Marek Kotewicz Date: Wed, 21 Jan 2015 21:35:15 +0100 Subject: toDecimal/fromDecimal is using bignumber.js now --- lib/web3.js | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) (limited to 'lib/web3.js') diff --git a/lib/web3.js b/lib/web3.js index cfe06763d..96002a232 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -23,6 +23,32 @@ * @date 2014 */ +if (process.env.NODE_ENV !== 'build') { + var BigNumber = require('bignumber.js'); +} + +var ETH_UNITS = [ + 'wei', + 'Kwei', + 'Mwei', + 'Gwei', + 'szabo', + 'finney', + 'ether', + 'grand', + 'Mether', + 'Gether', + 'Tether', + 'Pether', + 'Eether', + 'Zether', + 'Yether', + 'Nether', + 'Dether', + 'Vether', + 'Uether' +]; + /// @returns an array of objects describing web3 api methods var web3Methods = function () { return [ @@ -160,16 +186,6 @@ var setupProperties = function (obj, properties) { }); }; -// TODO: import from a dependency, don't duplicate. -// TODO: use bignumber for that! -var hexToDec = function (hex) { - return parseInt(hex, 16).toString(); -}; - -var decToHex = function (dec) { - return parseInt(dec).toString(16); -}; - /// setups web3 object, and it's in-browser executed methods var web3 = { _callbacks: {}, @@ -216,19 +232,20 @@ var web3 = { /// @returns decimal representaton of hex value prefixed by 0x toDecimal: function (val) { - return hexToDec(val.substring(2)); + return (new BigNumber(val.substring(2), 16).toString(10)); }, /// @returns hex representation (prefixed by 0x) of decimal value fromDecimal: function (val) { - return "0x" + decToHex(val); + return "0x" + (new BigNumber(val).toString(16)); }, /// used to transform value/string to eth string + /// TODO: use BigNumber.js to parse int toEth: function(str) { var val = typeof str === "string" ? str.indexOf('0x') === 0 ? parseInt(str.substr(2), 16) : parseInt(str) : str; var unit = 0; - var units = [ 'wei', 'Kwei', 'Mwei', 'Gwei', 'szabo', 'finney', 'ether', 'grand', 'Mether', 'Gether', 'Tether', 'Pether', 'Eether', 'Zether', 'Yether', 'Nether', 'Dether', 'Vether', 'Uether' ]; + var units = ETH_UNITS; while (val > 3000 && unit < units.length - 1) { val /= 1000; -- cgit v1.2.3