aboutsummaryrefslogtreecommitdiffstats
path: root/dist/ethereum.js
diff options
context:
space:
mode:
Diffstat (limited to 'dist/ethereum.js')
-rw-r--r--dist/ethereum.js127
1 files changed, 101 insertions, 26 deletions
diff --git a/dist/ethereum.js b/dist/ethereum.js
index f146c25a3..06dfff0b7 100644
--- a/dist/ethereum.js
+++ b/dist/ethereum.js
@@ -210,7 +210,7 @@ module.exports = {
};
-},{"./const":2,"./formatters":6,"./types":10,"./utils":11,"./web3":12}],2:[function(require,module,exports){
+},{"./const":2,"./formatters":6,"./types":11,"./utils":12,"./web3":13}],2:[function(require,module,exports){
/*
This file is part of ethereum.js.
@@ -487,7 +487,7 @@ var contract = function (address, desc) {
module.exports = contract;
-},{"./abi":1,"./event":4,"./utils":11,"./web3":12}],4:[function(require,module,exports){
+},{"./abi":1,"./event":4,"./utils":12,"./web3":13}],4:[function(require,module,exports){
/*
This file is part of ethereum.js.
@@ -624,7 +624,7 @@ module.exports = {
};
-},{"./abi":1,"./utils":11}],5:[function(require,module,exports){
+},{"./abi":1,"./utils":12}],5:[function(require,module,exports){
/*
This file is part of ethereum.js.
@@ -727,7 +727,7 @@ Filter.prototype.logs = function () {
module.exports = Filter;
-},{"./web3":12}],6:[function(require,module,exports){
+},{"./web3":13}],6:[function(require,module,exports){
/*
This file is part of ethereum.js.
@@ -883,7 +883,7 @@ module.exports = {
};
-},{"./const":2,"./utils":11}],7:[function(require,module,exports){
+},{"./const":2,"./utils":12}],7:[function(require,module,exports){
/*
This file is part of ethereum.js.
@@ -924,7 +924,8 @@ HttpSyncProvider.prototype.send = function (payload) {
request.send(JSON.stringify(payload));
// check request.status
- return request.responseText;
+ var result = request.responseText;
+ return JSON.parse(result);
};
module.exports = HttpSyncProvider;
@@ -947,6 +948,69 @@ module.exports = HttpSyncProvider;
You should have received a copy of the GNU Lesser General Public License
along with ethereum.js. If not, see <http://www.gnu.org/licenses/>.
*/
+/** @file jsonrpc.js
+ * @authors:
+ * Marek Kotewicz <marek@ethdev.com>
+ * @date 2015
+ */
+
+var messageId = 1;
+
+/// Should be called to valid json create payload object
+/// @param method of jsonrpc call, required
+/// @param params, an array of method params, optional
+/// @returns valid jsonrpc payload object
+var toPayload = function (method, params) {
+ if (!method)
+ console.error('jsonrpc method should be specified!');
+
+ return {
+ jsonrpc: '2.0',
+ method: method,
+ params: params || [],
+ id: messageId++
+ };
+};
+
+/// Should be called to check if jsonrpc response is valid
+/// @returns true if response doesn't have error field
+var isValidResponse = function (response) {
+ return response && !response.error;
+};
+
+/// Should be called to create batch payload object
+/// @param messages, an array of objects with method (required) and params (optional) fields
+var toBatchPayload = function (messages) {
+ return messages.map(function (message) {
+ return toPayload(message.method, message.params);
+ });
+};
+
+module.exports = {
+ toPayload: toPayload,
+ isValidResponse: isValidResponse,
+ toBatchPayload: toBatchPayload
+};
+
+
+
+},{}],9:[function(require,module,exports){
+/*
+ This file is part of ethereum.js.
+
+ ethereum.js is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ ethereum.js is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with ethereum.js. If not, see <http://www.gnu.org/licenses/>.
+*/
/** @file providermanager.js
* @authors:
* Jeffrey Wilcke <jeff@ethdev.com>
@@ -956,7 +1020,9 @@ module.exports = HttpSyncProvider;
* @date 2014
*/
-var web3 = require('./web3'); // jshint ignore:line
+var web3 = require('./web3');
+var jsonrpc = require('./jsonrpc');
+
/**
* Provider manager object prototype
@@ -970,21 +1036,34 @@ var web3 = require('./web3'); // jshint ignore:line
var ProviderManager = function() {
this.polls = [];
this.provider = undefined;
- this.id = 1;
var self = this;
var poll = function () {
if (self.provider) {
- self.polls.forEach(function (data) {
- var result = self.send(data.data);
-
+ var pollsBatch = self.polls.map(function (data) {
+ return data.data;
+ });
+
+ var payload = jsonrpc.toBatchPayload(pollsBatch);
+ var results = self.provider.send(payload);
+
+ self.polls.forEach(function (data, index) {
+ var result = results[index];
+
+ if (!jsonrpc.isValidResponse(result)) {
+ return;
+ }
+
+ result = result.result;
// dont call the callback if result is not an array, or empty one
if (!(result instanceof Array) || result.length === 0) {
return;
}
data.callback(result);
+
});
+
}
setTimeout(poll, 1000);
};
@@ -994,21 +1073,16 @@ var ProviderManager = function() {
/// sends outgoing requests
/// @params data - an object with at least 'method' property
ProviderManager.prototype.send = function(data) {
-
- data.jsonrpc = '2.0';
- data.params = data.params || [];
- data.id = this.id++;
+ var payload = jsonrpc.toPayload(data.method, data.params);
if (this.provider === undefined) {
console.error('provider is not set');
return null;
}
- //TODO: handle error here?
- var result = this.provider.send(data);
- result = JSON.parse(result);
+ var result = this.provider.send(payload);
- if (result.error) {
+ if (!jsonrpc.isValidResponse(result)) {
console.log(result.error);
return null;
}
@@ -1040,7 +1114,7 @@ ProviderManager.prototype.stopPolling = function (pollId) {
module.exports = ProviderManager;
-},{"./web3":12}],9:[function(require,module,exports){
+},{"./jsonrpc":8,"./web3":13}],10:[function(require,module,exports){
/*
This file is part of ethereum.js.
@@ -1068,13 +1142,14 @@ var QtSyncProvider = function () {
};
QtSyncProvider.prototype.send = function (payload) {
- return navigator.qt.callMethod(JSON.stringify(payload));
+ var result = navigator.qt.callMethod(JSON.stringify(payload));
+ return JSON.parse(result);
};
module.exports = QtSyncProvider;
-},{}],10:[function(require,module,exports){
+},{}],11:[function(require,module,exports){
/*
This file is part of ethereum.js.
@@ -1155,7 +1230,7 @@ module.exports = {
};
-},{"./formatters":6}],11:[function(require,module,exports){
+},{"./formatters":6}],12:[function(require,module,exports){
/*
This file is part of ethereum.js.
@@ -1299,7 +1374,7 @@ module.exports = {
};
-},{"./const":2}],12:[function(require,module,exports){
+},{"./const":2}],13:[function(require,module,exports){
/*
This file is part of ethereum.js.
@@ -1557,7 +1632,7 @@ web3.setProvider = function(provider) {
module.exports = web3;
-},{"./utils":11}],"web3":[function(require,module,exports){
+},{"./utils":12}],"web3":[function(require,module,exports){
var web3 = require('./lib/web3');
var ProviderManager = require('./lib/providermanager');
web3.provider = new ProviderManager();
@@ -1570,7 +1645,7 @@ web3.abi = require('./lib/abi');
module.exports = web3;
-},{"./lib/abi":1,"./lib/contract":3,"./lib/filter":5,"./lib/httpsync":7,"./lib/providermanager":8,"./lib/qtsync":9,"./lib/web3":12}]},{},["web3"])
+},{"./lib/abi":1,"./lib/contract":3,"./lib/filter":5,"./lib/httpsync":7,"./lib/providermanager":9,"./lib/qtsync":10,"./lib/web3":13}]},{},["web3"])
//# sourceMappingURL=ethereum.js.map \ No newline at end of file