mirror of https://github.com/status-im/web3.js.git
commit
ac696408f2
|
@ -1621,24 +1621,24 @@ module.exports = {
|
|||
* @date 2015
|
||||
*/
|
||||
|
||||
var utils = require('../utils/utils');
|
||||
|
||||
module.exports = {
|
||||
InvalidNumberOfParams: new Error('Invalid number of input parameters'),
|
||||
InvalidProvider: new Error('Providor not set or invalid'),
|
||||
InvalidResponse: function(result){
|
||||
var message = 'Invalid JSON RPC response';
|
||||
|
||||
if(utils.isObject(result) && result.error && result.error.message) {
|
||||
message = result.error.message;
|
||||
}
|
||||
|
||||
InvalidNumberOfParams: function () {
|
||||
return new Error('Invalid number of input parameters');
|
||||
},
|
||||
InvalidConnection: function (host){
|
||||
return new Error('CONNECTION ERROR: Couldn\'t connect to node '+ host +', is it running?');
|
||||
},
|
||||
InvalidProvider: function () {
|
||||
return new Error('Providor not set or invalid');
|
||||
},
|
||||
InvalidResponse: function (result){
|
||||
var message = !!result && !!result.error && !!result.error.message ? result.error.message : 'Invalid JSON RPC response';
|
||||
return new Error(message);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
},{"../utils/utils":7}],13:[function(require,module,exports){
|
||||
},{}],13:[function(require,module,exports){
|
||||
/*
|
||||
This file is part of ethereum.js.
|
||||
|
||||
|
@ -2123,6 +2123,20 @@ Filter.prototype.watch = function (callback) {
|
|||
});
|
||||
};
|
||||
|
||||
// call getFilterLogs on start
|
||||
if (!utils.isString(this.options)) {
|
||||
this.get(function (err, messages) {
|
||||
// don't send all the responses to all the watches again... just to this one
|
||||
if (err) {
|
||||
callback(err);
|
||||
}
|
||||
|
||||
messages.forEach(function (message) {
|
||||
callback(null, message);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
RequestManager.getInstance().startPolling({
|
||||
method: this.implementation.poll.call,
|
||||
params: [this.filterId],
|
||||
|
@ -2135,12 +2149,24 @@ Filter.prototype.stopWatching = function () {
|
|||
this.callbacks = [];
|
||||
};
|
||||
|
||||
Filter.prototype.get = function () {
|
||||
var logs = this.implementation.getLogs(this.filterId);
|
||||
Filter.prototype.get = function (callback) {
|
||||
var self = this;
|
||||
return logs.map(function (log) {
|
||||
return self.formatter ? self.formatter(log) : log;
|
||||
});
|
||||
if (utils.isFunction(callback)) {
|
||||
this.implementation.getLogs(this.filterId, function(err, res){
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.map(function (log) {
|
||||
return self.formatter ? self.formatter(log) : log;
|
||||
}));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
var logs = this.implementation.getLogs(this.filterId);
|
||||
return logs.map(function (log) {
|
||||
return self.formatter ? self.formatter(log) : log;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = Filter;
|
||||
|
@ -2387,6 +2413,7 @@ module.exports = {
|
|||
"use strict";
|
||||
|
||||
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; // jshint ignore:line
|
||||
var errors = require('./errors');
|
||||
|
||||
var HttpProvider = function (host) {
|
||||
this.host = host || 'http://localhost:8080';
|
||||
|
@ -2396,7 +2423,13 @@ HttpProvider.prototype.send = function (payload) {
|
|||
var request = new XMLHttpRequest();
|
||||
|
||||
request.open('POST', this.host, false);
|
||||
request.send(JSON.stringify(payload));
|
||||
|
||||
try {
|
||||
request.send(JSON.stringify(payload));
|
||||
} catch(error) {
|
||||
throw errors.InvalidConnection(this.host);
|
||||
}
|
||||
|
||||
|
||||
// check request.status
|
||||
// TODO: throw an error here! it cannot silently fail!!!
|
||||
|
@ -2416,13 +2449,18 @@ HttpProvider.prototype.sendAsync = function (payload, callback) {
|
|||
};
|
||||
|
||||
request.open('POST', this.host, true);
|
||||
request.send(JSON.stringify(payload));
|
||||
|
||||
try {
|
||||
request.send(JSON.stringify(payload));
|
||||
} catch(error) {
|
||||
callback(errors.InvalidConnection(this.host));
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = HttpProvider;
|
||||
|
||||
|
||||
},{"xmlhttprequest":5}],18:[function(require,module,exports){
|
||||
},{"./errors":12,"xmlhttprequest":5}],18:[function(require,module,exports){
|
||||
/*
|
||||
This file is part of ethereum.js.
|
||||
|
||||
|
@ -2584,7 +2622,7 @@ Method.prototype.extractCallback = function (args) {
|
|||
*/
|
||||
Method.prototype.validateArgs = function (args) {
|
||||
if (args.length !== this.params) {
|
||||
throw errors.InvalidNumberOfParams;
|
||||
throw errors.InvalidNumberOfParams();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -2935,7 +2973,7 @@ RequestManager.getInstance = function () {
|
|||
*/
|
||||
RequestManager.prototype.send = function (data) {
|
||||
if (!this.provider) {
|
||||
console.error(errors.InvalidProvider);
|
||||
console.error(errors.InvalidProvider());
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -2958,7 +2996,7 @@ RequestManager.prototype.send = function (data) {
|
|||
*/
|
||||
RequestManager.prototype.sendAsync = function (data, callback) {
|
||||
if (!this.provider) {
|
||||
return callback(errors.InvalidProvider);
|
||||
return callback(errors.InvalidProvider());
|
||||
}
|
||||
|
||||
var payload = Jsonrpc.getInstance().toPayload(data.method, data.params);
|
||||
|
@ -3049,7 +3087,7 @@ RequestManager.prototype.poll = function () {
|
|||
}
|
||||
|
||||
if (!this.provider) {
|
||||
console.error(errors.InvalidProvider);
|
||||
console.error(errors.InvalidProvider());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -20,18 +20,18 @@
|
|||
* @date 2015
|
||||
*/
|
||||
|
||||
var utils = require('../utils/utils');
|
||||
|
||||
module.exports = {
|
||||
InvalidNumberOfParams: new Error('Invalid number of input parameters'),
|
||||
InvalidProvider: new Error('Providor not set or invalid'),
|
||||
InvalidResponse: function(result){
|
||||
var message = 'Invalid JSON RPC response';
|
||||
|
||||
if(utils.isObject(result) && result.error && result.error.message) {
|
||||
message = result.error.message;
|
||||
}
|
||||
|
||||
InvalidNumberOfParams: function () {
|
||||
return new Error('Invalid number of input parameters');
|
||||
},
|
||||
InvalidConnection: function (host){
|
||||
return new Error('CONNECTION ERROR: Couldn\'t connect to node '+ host +', is it running?');
|
||||
},
|
||||
InvalidProvider: function () {
|
||||
return new Error('Providor not set or invalid');
|
||||
},
|
||||
InvalidResponse: function (result){
|
||||
var message = !!result && !!result.error && !!result.error.message ? result.error.message : 'Invalid JSON RPC response';
|
||||
return new Error(message);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -86,6 +86,20 @@ Filter.prototype.watch = function (callback) {
|
|||
});
|
||||
};
|
||||
|
||||
// call getFilterLogs on start
|
||||
if (!utils.isString(this.options)) {
|
||||
this.get(function (err, messages) {
|
||||
// don't send all the responses to all the watches again... just to this one
|
||||
if (err) {
|
||||
callback(err);
|
||||
}
|
||||
|
||||
messages.forEach(function (message) {
|
||||
callback(null, message);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
RequestManager.getInstance().startPolling({
|
||||
method: this.implementation.poll.call,
|
||||
params: [this.filterId],
|
||||
|
@ -98,12 +112,24 @@ Filter.prototype.stopWatching = function () {
|
|||
this.callbacks = [];
|
||||
};
|
||||
|
||||
Filter.prototype.get = function () {
|
||||
var logs = this.implementation.getLogs(this.filterId);
|
||||
Filter.prototype.get = function (callback) {
|
||||
var self = this;
|
||||
return logs.map(function (log) {
|
||||
return self.formatter ? self.formatter(log) : log;
|
||||
});
|
||||
if (utils.isFunction(callback)) {
|
||||
this.implementation.getLogs(this.filterId, function(err, res){
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.map(function (log) {
|
||||
return self.formatter ? self.formatter(log) : log;
|
||||
}));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
var logs = this.implementation.getLogs(this.filterId);
|
||||
return logs.map(function (log) {
|
||||
return self.formatter ? self.formatter(log) : log;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = Filter;
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
"use strict";
|
||||
|
||||
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; // jshint ignore:line
|
||||
var errors = require('./errors');
|
||||
|
||||
var HttpProvider = function (host) {
|
||||
this.host = host || 'http://localhost:8080';
|
||||
|
@ -34,7 +35,13 @@ HttpProvider.prototype.send = function (payload) {
|
|||
var request = new XMLHttpRequest();
|
||||
|
||||
request.open('POST', this.host, false);
|
||||
request.send(JSON.stringify(payload));
|
||||
|
||||
try {
|
||||
request.send(JSON.stringify(payload));
|
||||
} catch(error) {
|
||||
throw errors.InvalidConnection(this.host);
|
||||
}
|
||||
|
||||
|
||||
// check request.status
|
||||
// TODO: throw an error here! it cannot silently fail!!!
|
||||
|
@ -54,7 +61,12 @@ HttpProvider.prototype.sendAsync = function (payload, callback) {
|
|||
};
|
||||
|
||||
request.open('POST', this.host, true);
|
||||
request.send(JSON.stringify(payload));
|
||||
|
||||
try {
|
||||
request.send(JSON.stringify(payload));
|
||||
} catch(error) {
|
||||
callback(errors.InvalidConnection(this.host));
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = HttpProvider;
|
||||
|
|
|
@ -66,7 +66,7 @@ Method.prototype.extractCallback = function (args) {
|
|||
*/
|
||||
Method.prototype.validateArgs = function (args) {
|
||||
if (args.length !== this.params) {
|
||||
throw errors.InvalidNumberOfParams;
|
||||
throw errors.InvalidNumberOfParams();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ RequestManager.getInstance = function () {
|
|||
*/
|
||||
RequestManager.prototype.send = function (data) {
|
||||
if (!this.provider) {
|
||||
console.error(errors.InvalidProvider);
|
||||
console.error(errors.InvalidProvider());
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,7 @@ RequestManager.prototype.send = function (data) {
|
|||
*/
|
||||
RequestManager.prototype.sendAsync = function (data, callback) {
|
||||
if (!this.provider) {
|
||||
return callback(errors.InvalidProvider);
|
||||
return callback(errors.InvalidProvider());
|
||||
}
|
||||
|
||||
var payload = Jsonrpc.getInstance().toPayload(data.method, data.params);
|
||||
|
@ -179,7 +179,7 @@ RequestManager.prototype.poll = function () {
|
|||
}
|
||||
|
||||
if (!this.provider) {
|
||||
console.error(errors.InvalidProvider);
|
||||
console.error(errors.InvalidProvider());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -67,7 +67,22 @@ describe('web3.eth.contract', function () {
|
|||
],
|
||||
address: '0x1234567890123456789012345678901234567890'
|
||||
});
|
||||
} else if (step === 2 && utils.isArray(payload)) {
|
||||
} else if (step === 2) {
|
||||
step = 3;
|
||||
provider.injectResult([{
|
||||
address: address,
|
||||
topics: [
|
||||
sha3,
|
||||
'0x0000000000000000000000001234567890123456789012345678901234567890',
|
||||
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
||||
],
|
||||
number: 2,
|
||||
data: '0x0000000000000000000000000000000000000000000000000000000000000001' +
|
||||
'0000000000000000000000000000000000000000000000000000000000000008'
|
||||
}]);
|
||||
assert.equal(payload.jsonrpc, '2.0');
|
||||
assert.equal(payload.method, 'eth_getFilterLogs');
|
||||
} else if (step === 3 && utils.isArray(payload)) {
|
||||
provider.injectBatchResults([[{
|
||||
address: address,
|
||||
topics: [
|
||||
|
@ -89,12 +104,16 @@ describe('web3.eth.contract', function () {
|
|||
var Contract = web3.eth.contract(desc);
|
||||
var contract = new Contract(address);
|
||||
|
||||
var res = 0;
|
||||
contract.Changed({from: address}).watch(function(err, result) {
|
||||
assert.equal(result.args.from, address);
|
||||
assert.equal(result.args.amount, 1);
|
||||
assert.equal(result.args.t1, 1);
|
||||
assert.equal(result.args.t2, 8);
|
||||
done();
|
||||
res++;
|
||||
if (res === 2) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -39,8 +39,8 @@ describe('lib/web3/method', function () {
|
|||
var test2 = function () { method.validateArgs(args2); };
|
||||
|
||||
// then
|
||||
assert.throws(test, errors.InvalidNumberOfParams);
|
||||
assert.throws(test2, errors.InvalidNumberOfParams);
|
||||
assert.throws(test, errors.InvalidNumberOfParams().message);
|
||||
assert.throws(test2, errors.InvalidNumberOfParams().message);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue