Added getEtherPrice and getHistory calls for Etherscan Provider.
This commit is contained in:
parent
43061c691b
commit
a568be9df3
@ -218,6 +218,14 @@ utils.defineProperty(EtherscanProvider.prototype, 'perform', function(method, pa
|
|||||||
url += apiKey;
|
url += apiKey;
|
||||||
return Provider.fetchJSON(url, null, getResult);
|
return Provider.fetchJSON(url, null, getResult);
|
||||||
|
|
||||||
|
case 'getEtherPrice':
|
||||||
|
if (this.name !== 'homestead') { return Promise.resolve(0.0); }
|
||||||
|
url += '/api?module=stats&action=ethprice';
|
||||||
|
url += apiKey;
|
||||||
|
return Provider.fetchJSON(url, null, getResult).then(function(result) {
|
||||||
|
return parseFloat(result.ethusd);
|
||||||
|
});
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -225,4 +233,36 @@ utils.defineProperty(EtherscanProvider.prototype, 'perform', function(method, pa
|
|||||||
return Promise.reject(new Error('not implemented - ' + method));
|
return Promise.reject(new Error('not implemented - ' + method));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
utils.defineProperty(EtherscanProvider.prototype, 'getHistory', function(addressOrName, startBlock, endBlock) {
|
||||||
|
|
||||||
|
var url = this.baseUrl;
|
||||||
|
|
||||||
|
var apiKey = '';
|
||||||
|
if (this.apiKey) { apiKey += '&apikey=' + this.apiKey; }
|
||||||
|
|
||||||
|
if (startBlock == null) { startBlock = 0; }
|
||||||
|
if (endBlock == null) { endBlock = 99999999; }
|
||||||
|
|
||||||
|
return this.resolveName(addressOrName).then(function(address) {
|
||||||
|
url += '/api?module=account&action=txlist&address=' + address;
|
||||||
|
url += '&fromBlock=' + startBlock;
|
||||||
|
url += '&endBlock=' + endBlock;
|
||||||
|
url += '&sort=asc';
|
||||||
|
|
||||||
|
return Provider.fetchJSON(url, null, getResult).then(function(result) {
|
||||||
|
var output = [];
|
||||||
|
result.forEach(function(tx) {
|
||||||
|
['contractAddress', 'to'].forEach(function(key) {
|
||||||
|
if (tx[key] == '') { delete tx[key]; }
|
||||||
|
});
|
||||||
|
if (tx.creates == null && tx.contractAddress != null) {
|
||||||
|
tx.creates = tx.contractAddress;
|
||||||
|
}
|
||||||
|
output.push(Provider._formatters.checkTransactionResponse(tx));
|
||||||
|
});
|
||||||
|
return output;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
module.exports = EtherscanProvider;;
|
module.exports = EtherscanProvider;;
|
||||||
|
@ -362,8 +362,8 @@ function testProvider(providerName, networkName) {
|
|||||||
//if (providerName === 'EtherscanProvider' && networkName !== 'homestead') { return; }
|
//if (providerName === 'EtherscanProvider' && networkName !== 'homestead') { return; }
|
||||||
|
|
||||||
// HACK! INFURA is flakey on homestead right now and the test cases are failing
|
// HACK! INFURA is flakey on homestead right now and the test cases are failing
|
||||||
console.log('WARNING: Test cases being skipped! Temporary. Please turn backon soon.');
|
//console.log('WARNING: Test cases being skipped! Temporary. Please turn backon soon.');
|
||||||
if (providerName === 'InfuraProvider' && networkName === 'homestead') { return; }
|
//if (providerName === 'InfuraProvider' && networkName === 'homestead') { return; }
|
||||||
|
|
||||||
testProvider(providerName, networkName);
|
testProvider(providerName, networkName);
|
||||||
});
|
});
|
||||||
@ -660,3 +660,22 @@ describe('Test legacy provider arguments', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('Test extra Etherscan operations', function() {
|
||||||
|
var providers = require('../providers');
|
||||||
|
var provider = new providers.EtherscanProvider();
|
||||||
|
it('fethces the current price of ether', function() {
|
||||||
|
this.timeout(20000);
|
||||||
|
return provider.getEtherPrice().then(function(price) {
|
||||||
|
assert.ok(typeof(price) === 'number', 'Etherscan price returns a number');
|
||||||
|
assert.ok(price > 0.0, 'Etherscan price returns non-zero');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('fetches the history', function() {
|
||||||
|
this.timeout(100000);
|
||||||
|
return provider.getHistory('ricmoo.firefly.eth').then(function(history) {
|
||||||
|
assert.ok(history.length > 40, 'Etherscan history returns results');
|
||||||
|
assert.equal(history[0].hash, '0xd25f550cfdff90c086a6496a84dbb2c4577df15b1416e5b3319a3e4ebb5b25d8', 'Etherscan history returns correct transaction');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user