aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/buy-eth-url.js
blob: 387f41392c49785e4743139fe8acaa8ccc57c50d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
module.exports = getBuyEthUrl

/**
 * Gives the caller a url at which the user can acquire eth, depending on the network they are in
 *
 * @param {object} opts Options required to determine the correct url
 * @param {string} opts.network The network for which to return a url
 * @param {string} opts.amount The amount of ETH to buy on coinbase. Only relevant if network === '1'.
 * @param {string} opts.address The address the bought ETH should be sent to.  Only relevant if network === '1'.
 * @returns {string|undefined} The url at which the user can access ETH, while in the given network. If the passed
 * network does not match any of the specified cases, or if no network is given, returns undefined.
 *
 */
function getBuyEthUrl({ network, amount, address, service }) {
  // default service by network if not specified
  if (!service) service = getDefaultServiceForNetwork(network)

  switch (service) {
    case 'wyre':
      return `https://dash.sendwyre.com/sign-up`
    case 'coinswitch':
      return `https://metamask.coinswitch.co/?address=${address}&to=eth`
    case 'coinbase':
      return `https://buy.coinbase.com/?code=9ec56d01-7e81-5017-930c-513daa27bb6a&amount=${amount}&address=${address}&crypto_currency=ETH`
    case 'metamask-faucet':
      return 'https://faucet.metamask.io/'
    case 'rinkeby-faucet':
      return 'https://www.rinkeby.io/'
    case 'kovan-faucet':
      return 'https://github.com/kovan-testnet/faucet'
  }
  throw new Error(`Unknown cryptocurrency exchange or faucet: "${service}"`)
}

function getDefaultServiceForNetwork (network) {
  switch (network) {
    case '1':
      return 'wyre'
    case '3':
      return 'metamask-faucet'
    case '4':
      return 'rinkeby-faucet'
    case '42':
      return 'kovan-faucet'
  }
  throw new Error(`No default cryptocurrency exchange or faucet for networkId: "${network}"`)
}