Etherscan links based on netVersion identifier (#4772)
* Use netVersion to determine external links * Update additional isTest references
This commit is contained in:
22
js/src/3rdparty/etherscan/account.js
vendored
22
js/src/3rdparty/etherscan/account.js
vendored
@@ -21,15 +21,15 @@ const PAGE_SIZE = 25;
|
||||
import util from '../../api/util';
|
||||
import { call } from './call';
|
||||
|
||||
function _call (method, params, test) {
|
||||
return call('account', method, params, test);
|
||||
function _call (method, params, test, netVersion) {
|
||||
return call('account', method, params, test, netVersion);
|
||||
}
|
||||
|
||||
function balance (address, test = false) {
|
||||
function balance (address, test, netVersion) {
|
||||
return _call('balance', {
|
||||
address: address,
|
||||
tag: 'latest'
|
||||
}, test).then((balance) => {
|
||||
}, test, netVersion).then((balance) => {
|
||||
// same format as balancemulti below
|
||||
return {
|
||||
account: address,
|
||||
@@ -38,21 +38,21 @@ function balance (address, test = false) {
|
||||
});
|
||||
}
|
||||
|
||||
function balances (addresses, test = false) {
|
||||
function balances (addresses, test, netVersion) {
|
||||
return _call('balancemulti', {
|
||||
address: addresses.join(','),
|
||||
tag: 'latest'
|
||||
}, test);
|
||||
}, test, netVersion);
|
||||
}
|
||||
|
||||
function transactions (address, page, test = false) {
|
||||
function transactions (address, page, test, netVersion) {
|
||||
// page offset from 0
|
||||
return _call('txlist', {
|
||||
address: address,
|
||||
offset: PAGE_SIZE,
|
||||
page: (page || 0) + 1,
|
||||
sort: 'desc'
|
||||
}, test).then((transactions) => {
|
||||
}, test, netVersion).then((transactions) => {
|
||||
return transactions.map((tx) => {
|
||||
return {
|
||||
blockNumber: new BigNumber(tx.blockNumber || 0),
|
||||
@@ -67,9 +67,9 @@ function transactions (address, page, test = false) {
|
||||
}
|
||||
|
||||
const account = {
|
||||
balance: balance,
|
||||
balances: balances,
|
||||
transactions: transactions
|
||||
balance,
|
||||
balances,
|
||||
transactions
|
||||
};
|
||||
|
||||
export { account };
|
||||
|
||||
24
js/src/3rdparty/etherscan/call.js
vendored
24
js/src/3rdparty/etherscan/call.js
vendored
@@ -23,14 +23,32 @@ const options = {
|
||||
}
|
||||
};
|
||||
|
||||
export function call (module, action, _params, test) {
|
||||
const host = test ? 'testnet.etherscan.io' : 'api.etherscan.io';
|
||||
export function call (module, action, _params, test, netVersion) {
|
||||
let prefix = 'api.';
|
||||
|
||||
switch (netVersion) {
|
||||
case '2':
|
||||
case '3':
|
||||
prefix = 'testnet.';
|
||||
break;
|
||||
|
||||
case '42':
|
||||
prefix = 'kovan.';
|
||||
break;
|
||||
|
||||
case '0':
|
||||
default:
|
||||
if (test) {
|
||||
prefix = 'testnet.';
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
const query = stringify(Object.assign({
|
||||
module, action
|
||||
}, _params || {}));
|
||||
|
||||
return fetch(`https://${host}/api?${query}`, options)
|
||||
return fetch(`https://${prefix}etherscan.io/api?${query}`, options)
|
||||
.then((response) => {
|
||||
if (!response.ok) {
|
||||
throw { code: response.status, message: response.statusText }; // eslint-disable-line
|
||||
|
||||
4
js/src/3rdparty/etherscan/helpers.spec.js
vendored
4
js/src/3rdparty/etherscan/helpers.spec.js
vendored
@@ -19,8 +19,8 @@ import { stringify } from 'qs';
|
||||
|
||||
import { url } from './links';
|
||||
|
||||
function mockget (requests, test) {
|
||||
let scope = nock(url(test));
|
||||
function mockget (requests, test, netVersion) {
|
||||
let scope = nock(url(test, netVersion));
|
||||
|
||||
requests.forEach((request) => {
|
||||
scope = scope
|
||||
|
||||
33
js/src/3rdparty/etherscan/links.js
vendored
33
js/src/3rdparty/etherscan/links.js
vendored
@@ -14,14 +14,35 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
export const url = (isTestnet = false) => {
|
||||
return `https://${isTestnet ? 'testnet.' : ''}etherscan.io`;
|
||||
// NOTE: Keep 'isTestnet' for backwards library compatibility
|
||||
export const url = (isTestnet = false, netVersion = '0') => {
|
||||
let prefix = '';
|
||||
|
||||
switch (netVersion) {
|
||||
case '2':
|
||||
case '3':
|
||||
prefix = 'testnet.';
|
||||
break;
|
||||
|
||||
case '42':
|
||||
prefix = 'kovan.';
|
||||
break;
|
||||
|
||||
case '0':
|
||||
default:
|
||||
if (isTestnet) {
|
||||
prefix = 'testnet.';
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return `https://${prefix}etherscan.io`;
|
||||
};
|
||||
|
||||
export const txLink = (hash, isTestnet = false) => {
|
||||
return `${url(isTestnet)}/tx/${hash}`;
|
||||
export const txLink = (hash, isTestnet = false, netVersion = '0') => {
|
||||
return `${url(isTestnet, netVersion)}/tx/${hash}`;
|
||||
};
|
||||
|
||||
export const addressLink = (address, isTestnet = false) => {
|
||||
return `${url(isTestnet)}/address/${address}`;
|
||||
export const addressLink = (address, isTestnet = false, netVersion = '0') => {
|
||||
return `${url(isTestnet, netVersion)}/address/${address}`;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user