This reverts commit 3d22f4a86d
.
This commit is contained in:
parent
99ff0a18b0
commit
7d04be3613
1
go.mod
1
go.mod
|
@ -80,7 +80,6 @@ require github.com/fogleman/gg v1.3.0
|
||||||
require (
|
require (
|
||||||
github.com/gorilla/sessions v1.2.1
|
github.com/gorilla/sessions v1.2.1
|
||||||
github.com/meirf/gopart v0.0.0-20180520194036-37e9492a85a8
|
github.com/meirf/gopart v0.0.0-20180520194036-37e9492a85a8
|
||||||
github.com/rmg/iso4217 v1.0.0
|
|
||||||
github.com/waku-org/go-waku v0.2.3-test.0.20221212154545-7443daea4cd4
|
github.com/waku-org/go-waku v0.2.3-test.0.20221212154545-7443daea4cd4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -1835,8 +1835,6 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ
|
||||||
github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho=
|
github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho=
|
||||||
github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w8=
|
github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w8=
|
||||||
github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM=
|
github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM=
|
||||||
github.com/rmg/iso4217 v1.0.0 h1:qZP5nhSwHDKkgpuapOL6BDfHUbBgwXfiPTbPGcwZ92E=
|
|
||||||
github.com/rmg/iso4217 v1.0.0/go.mod h1:AbFI9wPu0EAO+Q6swPiMEfAtyz7T7EfNigAOKNNyiBE=
|
|
||||||
github.com/robertkrimen/godocdown v0.0.0-20130622164427-0bfa04905481/go.mod h1:C9WhFzY47SzYBIvzFqSvHIR6ROgDo4TtdTuRaOMjF/s=
|
github.com/robertkrimen/godocdown v0.0.0-20130622164427-0bfa04905481/go.mod h1:C9WhFzY47SzYBIvzFqSvHIR6ROgDo4TtdTuRaOMjF/s=
|
||||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||||
|
|
|
@ -2,13 +2,10 @@ package wallet
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/rmg/iso4217"
|
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
|
@ -315,14 +312,14 @@ func (api *API) GetEthereumChains(ctx context.Context, onlyEnabled bool) ([]*par
|
||||||
return api.s.rpcClient.NetworkManager.Get(onlyEnabled)
|
return api.s.rpcClient.NetworkManager.Get(onlyEnabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *API) FetchPrices(ctx context.Context, symbols []string, currencies []string) (map[string]map[string]float64, error) {
|
func (api *API) FetchPrices(ctx context.Context, symbols []string, currency string) (map[string]float64, error) {
|
||||||
log.Debug("call to FetchPrices")
|
log.Debug("call to FetchPrices")
|
||||||
return fetchCryptoComparePrices(symbols, currencies)
|
return fetchCryptoComparePrices(symbols, currency)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *API) FetchMarketValues(ctx context.Context, symbols []string, currencies []string) (map[string]map[string]MarketCoinValues, error) {
|
func (api *API) FetchMarketValues(ctx context.Context, symbols []string, currency string) (map[string]MarketCoinValues, error) {
|
||||||
log.Debug("call to FetchMarketValues")
|
log.Debug("call to FetchMarketValues")
|
||||||
return fetchTokenMarketValues(symbols, currencies)
|
return fetchTokenMarketValues(symbols, currency)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *API) GetHourlyMarketValues(ctx context.Context, symbol string, currency string, limit int, aggregate int) ([]TokenHistoricalPairs, error) {
|
func (api *API) GetHourlyMarketValues(ctx context.Context, symbol string, currency string, limit int, aggregate int) ([]TokenHistoricalPairs, error) {
|
||||||
|
@ -524,19 +521,3 @@ func (api *API) CreateMultiTransaction(ctx context.Context, multiTransaction *Mu
|
||||||
log.Debug("[WalletAPI:: CreateMultiTransaction] create multi transaction")
|
log.Debug("[WalletAPI:: CreateMultiTransaction] create multi transaction")
|
||||||
return api.s.transactionManager.createMultiTransaction(ctx, multiTransaction, data, api.router.bridges, password)
|
return api.s.transactionManager.createMultiTransaction(ctx, multiTransaction, data, api.router.bridges, password)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *API) IsCurrencyFiat(name string) bool {
|
|
||||||
code, _ := iso4217.ByName(strings.ToUpper(name))
|
|
||||||
|
|
||||||
return (code != 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (api *API) GetFiatCurrencyMinorUnit(name string) (int, error) {
|
|
||||||
code, minor := iso4217.ByName(strings.ToUpper(name))
|
|
||||||
|
|
||||||
if code == 0 {
|
|
||||||
return code, errors.New("Unknown currency: " + name)
|
|
||||||
}
|
|
||||||
|
|
||||||
return minor, nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -29,13 +29,13 @@ type Coin struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type MarketCoinValues struct {
|
type MarketCoinValues struct {
|
||||||
MKTCAP float64 `json:"MKTCAP"`
|
MKTCAP string `json:"MKTCAP"`
|
||||||
HIGHDAY float64 `json:"HIGHDAY"`
|
HIGHDAY string `json:"HIGHDAY"`
|
||||||
LOWDAY float64 `json:"LOWDAY"`
|
LOWDAY string `json:"LOWDAY"`
|
||||||
CHANGEPCTHOUR float64 `json:"CHANGEPCTHOUR"`
|
CHANGEPCTHOUR string `json:"CHANGEPCTHOUR"`
|
||||||
CHANGEPCTDAY float64 `json:"CHANGEPCTDAY"`
|
CHANGEPCTDAY string `json:"CHANGEPCTDAY"`
|
||||||
CHANGEPCT24HOUR float64 `json:"CHANGEPCT24HOUR"`
|
CHANGEPCT24HOUR string `json:"CHANGEPCT24HOUR"`
|
||||||
CHANGE24HOUR float64 `json:"CHANGE24HOUR"`
|
CHANGE24HOUR string `json:"CHANGE24HOUR"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type TokenHistoricalPairs struct {
|
type TokenHistoricalPairs struct {
|
||||||
|
@ -61,7 +61,7 @@ type CoinsContainer struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type MarketValuesContainer struct {
|
type MarketValuesContainer struct {
|
||||||
Raw map[string]map[string]MarketCoinValues `json:"Raw"`
|
Display map[string]map[string]MarketCoinValues `json:"Display"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func renameSymbols(symbols []string) (renames []string) {
|
func renameSymbols(symbols []string) (renames []string) {
|
||||||
|
@ -94,14 +94,13 @@ func chunkSymbols(symbols []string) [][]string {
|
||||||
return chunks
|
return chunks
|
||||||
}
|
}
|
||||||
|
|
||||||
func fetchCryptoComparePrices(symbols []string, currencies []string) (map[string]map[string]float64, error) {
|
func fetchCryptoComparePrices(symbols []string, currency string) (map[string]float64, error) {
|
||||||
chunks := chunkSymbols(symbols)
|
chunks := chunkSymbols(symbols)
|
||||||
result := make(map[string]map[string]float64)
|
result := make(map[string]float64)
|
||||||
realCurrencies := renameSymbols(currencies)
|
|
||||||
for _, smbls := range chunks {
|
for _, smbls := range chunks {
|
||||||
realSymbols := renameSymbols(smbls)
|
realSymbols := renameSymbols(smbls)
|
||||||
httpClient := http.Client{Timeout: time.Minute}
|
httpClient := http.Client{Timeout: time.Minute}
|
||||||
url := fmt.Sprintf("%s/data/pricemulti?fsyms=%s&tsyms=%s&extraParams=Status.im", cryptocompareURL, strings.Join(realSymbols, ","), strings.Join(realCurrencies, ","))
|
url := fmt.Sprintf("%s/data/pricemulti?fsyms=%s&tsyms=%s&extraParams=Status.im", cryptocompareURL, strings.Join(realSymbols, ","), currency)
|
||||||
resp, err := httpClient.Get(url)
|
resp, err := httpClient.Get(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -120,10 +119,7 @@ func fetchCryptoComparePrices(symbols []string, currencies []string) (map[string
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, symbol := range smbls {
|
for _, symbol := range smbls {
|
||||||
result[symbol] = map[string]float64{}
|
result[symbol] = prices[getRealSymbol(symbol)][strings.ToUpper(currency)]
|
||||||
for _, currency := range currencies {
|
|
||||||
result[symbol][currency] = prices[getRealSymbol(symbol)][getRealSymbol(currency)]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result, nil
|
return result, nil
|
||||||
|
@ -159,13 +155,12 @@ func fetchCryptoCompareTokenDetails(symbols []string) (map[string]Coin, error) {
|
||||||
return coins, nil
|
return coins, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func fetchTokenMarketValues(symbols []string, currencies []string) (map[string]map[string]MarketCoinValues, error) {
|
func fetchTokenMarketValues(symbols []string, currency string) (map[string]MarketCoinValues, error) {
|
||||||
realCurrencies := renameSymbols(currencies)
|
|
||||||
realSymbols := renameSymbols(symbols)
|
realSymbols := renameSymbols(symbols)
|
||||||
item := map[string]map[string]MarketCoinValues{}
|
item := map[string]MarketCoinValues{}
|
||||||
httpClient := http.Client{Timeout: time.Minute}
|
httpClient := http.Client{Timeout: time.Minute}
|
||||||
|
|
||||||
url := fmt.Sprintf("%s/data/pricemultifull?fsyms=%s&tsyms=%s&extraParams=Status.im", cryptocompareURL, strings.Join(realSymbols, ","), strings.Join(realCurrencies, ","))
|
url := fmt.Sprintf("%s/data/pricemultifull?fsyms=%s&tsyms=%s&extraParams=Status.im", cryptocompareURL, strings.Join(realSymbols, ","), currency)
|
||||||
resp, err := httpClient.Get(url)
|
resp, err := httpClient.Get(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return item, err
|
return item, err
|
||||||
|
@ -184,10 +179,7 @@ func fetchTokenMarketValues(symbols []string, currencies []string) (map[string]m
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, symbol := range symbols {
|
for _, symbol := range symbols {
|
||||||
item[symbol] = map[string]MarketCoinValues{}
|
item[symbol] = container.Display[getRealSymbol(symbol)][strings.ToUpper(currency)]
|
||||||
for _, currency := range currencies {
|
|
||||||
item[symbol][currency] = container.Raw[getRealSymbol(symbol)][getRealSymbol(currency)]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return item, nil
|
return item, nil
|
||||||
|
|
|
@ -20,10 +20,6 @@ import (
|
||||||
// WalletTickReload emitted every 15mn to reload the wallet balance and history
|
// WalletTickReload emitted every 15mn to reload the wallet balance and history
|
||||||
const EventWalletTickReload walletevent.EventType = "wallet-tick-reload"
|
const EventWalletTickReload walletevent.EventType = "wallet-tick-reload"
|
||||||
|
|
||||||
func getFixedCurrencies() []string {
|
|
||||||
return []string{"usd"}
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewReader(rpcClient *rpc.Client, tokenManager *token.Manager, accountsDB *accounts.Database, walletFeed *event.Feed) *Reader {
|
func NewReader(rpcClient *rpc.Client, tokenManager *token.Manager, accountsDB *accounts.Database, walletFeed *event.Feed) *Reader {
|
||||||
return &Reader{rpcClient, tokenManager, accountsDB, walletFeed, nil}
|
return &Reader{rpcClient, tokenManager, accountsDB, walletFeed, nil}
|
||||||
}
|
}
|
||||||
|
@ -36,17 +32,6 @@ type Reader struct {
|
||||||
cancel context.CancelFunc
|
cancel context.CancelFunc
|
||||||
}
|
}
|
||||||
|
|
||||||
type TokenMarketValues struct {
|
|
||||||
MarketCap float64 `json:"marketCap"`
|
|
||||||
HighDay float64 `json:"highDay"`
|
|
||||||
LowDay float64 `json:"lowDay"`
|
|
||||||
ChangePctHour float64 `json:"changePctHour"`
|
|
||||||
ChangePctDay float64 `json:"changePctDay"`
|
|
||||||
ChangePct24hour float64 `json:"changePct24hour"`
|
|
||||||
Change24hour float64 `json:"change24hour"`
|
|
||||||
Price float64 `json:"price"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ChainBalance struct {
|
type ChainBalance struct {
|
||||||
Balance *big.Float `json:"balance"`
|
Balance *big.Float `json:"balance"`
|
||||||
Address common.Address `json:"address"`
|
Address common.Address `json:"address"`
|
||||||
|
@ -62,8 +47,14 @@ type Token struct {
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
AssetWebsiteURL string `json:"assetWebsiteUrl"`
|
AssetWebsiteURL string `json:"assetWebsiteUrl"`
|
||||||
BuiltOn string `json:"builtOn"`
|
BuiltOn string `json:"builtOn"`
|
||||||
MarketValuesPerCurrency map[string]TokenMarketValues `json:"marketValuesPerCurrency"`
|
MarketCap string `json:"marketCap"`
|
||||||
PegSymbol string `json:"pegSymbol"`
|
HighDay string `json:"highDay"`
|
||||||
|
LowDay string `json:"lowDay"`
|
||||||
|
ChangePctHour string `json:"changePctHour"`
|
||||||
|
ChangePctDay string `json:"changePctDay"`
|
||||||
|
ChangePct24hour string `json:"changePct24hour"`
|
||||||
|
Change24hour string `json:"change24hour"`
|
||||||
|
CurrencyPrice float64 `json:"currencyPrice"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTokenBySymbols(tokens []*token.Token) map[string][]*token.Token {
|
func getTokenBySymbols(tokens []*token.Token) map[string][]*token.Token {
|
||||||
|
@ -139,13 +130,10 @@ func (r *Reader) GetWalletToken(ctx context.Context, addresses []common.Address)
|
||||||
chainIDs = append(chainIDs, network.ChainID)
|
chainIDs = append(chainIDs, network.ChainID)
|
||||||
}
|
}
|
||||||
|
|
||||||
currencies := make([]string, 0)
|
|
||||||
currency, err := r.accountsDB.GetCurrency()
|
currency, err := r.accountsDB.GetCurrency()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
currencies = append(currencies, currency)
|
|
||||||
currencies = append(currencies, getFixedCurrencies()...)
|
|
||||||
|
|
||||||
allTokens, err := r.tokenManager.GetAllTokens()
|
allTokens, err := r.tokenManager.GetAllTokens()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -160,14 +148,14 @@ func (r *Reader) GetWalletToken(ctx context.Context, addresses []common.Address)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
group = async.NewAtomicGroup(ctx)
|
group = async.NewAtomicGroup(ctx)
|
||||||
prices = map[string]map[string]float64{}
|
prices = map[string]float64{}
|
||||||
tokenDetails = map[string]Coin{}
|
tokenDetails = map[string]Coin{}
|
||||||
tokenMarketValues = map[string]map[string]MarketCoinValues{}
|
tokenMarketValues = map[string]MarketCoinValues{}
|
||||||
balances = map[uint64]map[common.Address]map[common.Address]*hexutil.Big{}
|
balances = map[uint64]map[common.Address]map[common.Address]*hexutil.Big{}
|
||||||
)
|
)
|
||||||
|
|
||||||
group.Add(func(parent context.Context) error {
|
group.Add(func(parent context.Context) error {
|
||||||
prices, err = fetchCryptoComparePrices(tokenSymbols, currencies)
|
prices, err = fetchCryptoComparePrices(tokenSymbols, currency)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -183,7 +171,7 @@ func (r *Reader) GetWalletToken(ctx context.Context, addresses []common.Address)
|
||||||
})
|
})
|
||||||
|
|
||||||
group.Add(func(parent context.Context) error {
|
group.Add(func(parent context.Context) error {
|
||||||
tokenMarketValues, err = fetchTokenMarketValues(tokenSymbols, currencies)
|
tokenMarketValues, err = fetchTokenMarketValues(tokenSymbols, currency)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -233,20 +221,6 @@ func (r *Reader) GetWalletToken(ctx context.Context, addresses []common.Address)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
marketValuesPerCurrency := make(map[string]TokenMarketValues)
|
|
||||||
for _, currency := range currencies {
|
|
||||||
marketValuesPerCurrency[currency] = TokenMarketValues{
|
|
||||||
MarketCap: tokenMarketValues[symbol][currency].MKTCAP,
|
|
||||||
HighDay: tokenMarketValues[symbol][currency].HIGHDAY,
|
|
||||||
LowDay: tokenMarketValues[symbol][currency].LOWDAY,
|
|
||||||
ChangePctHour: tokenMarketValues[symbol][currency].CHANGEPCTHOUR,
|
|
||||||
ChangePctDay: tokenMarketValues[symbol][currency].CHANGEPCTDAY,
|
|
||||||
ChangePct24hour: tokenMarketValues[symbol][currency].CHANGEPCT24HOUR,
|
|
||||||
Change24hour: tokenMarketValues[symbol][currency].CHANGE24HOUR,
|
|
||||||
Price: prices[symbol][currency],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
walletToken := Token{
|
walletToken := Token{
|
||||||
Name: tokens[0].Name,
|
Name: tokens[0].Name,
|
||||||
Color: tokens[0].Color,
|
Color: tokens[0].Color,
|
||||||
|
@ -256,8 +230,14 @@ func (r *Reader) GetWalletToken(ctx context.Context, addresses []common.Address)
|
||||||
Description: tokenDetails[symbol].Description,
|
Description: tokenDetails[symbol].Description,
|
||||||
AssetWebsiteURL: tokenDetails[symbol].AssetWebsiteURL,
|
AssetWebsiteURL: tokenDetails[symbol].AssetWebsiteURL,
|
||||||
BuiltOn: tokenDetails[symbol].BuiltOn,
|
BuiltOn: tokenDetails[symbol].BuiltOn,
|
||||||
MarketValuesPerCurrency: marketValuesPerCurrency,
|
MarketCap: tokenMarketValues[symbol].MKTCAP,
|
||||||
PegSymbol: tokens[0].PegSymbol,
|
HighDay: tokenMarketValues[symbol].HIGHDAY,
|
||||||
|
LowDay: tokenMarketValues[symbol].LOWDAY,
|
||||||
|
ChangePctHour: tokenMarketValues[symbol].CHANGEPCTHOUR,
|
||||||
|
ChangePctDay: tokenMarketValues[symbol].CHANGEPCTDAY,
|
||||||
|
ChangePct24hour: tokenMarketValues[symbol].CHANGEPCT24HOUR,
|
||||||
|
Change24hour: tokenMarketValues[symbol].CHANGE24HOUR,
|
||||||
|
CurrencyPrice: prices[symbol],
|
||||||
}
|
}
|
||||||
|
|
||||||
result[address] = append(result[address], walletToken)
|
result[address] = append(result[address], walletToken)
|
||||||
|
|
|
@ -401,14 +401,10 @@ func (r *Router) suggestedRoutes(
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
pricesMap, err := fetchCryptoComparePrices([]string{"ETH", tokenSymbol}, []string{"USD"})
|
prices, err := fetchCryptoComparePrices([]string{"ETH", tokenSymbol}, "USD")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
prices := make(map[string]float64, 0)
|
|
||||||
for symbol, pricePerCurrency := range pricesMap {
|
|
||||||
prices[symbol] = pricePerCurrency["USD"]
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
group = async.NewAtomicGroup(ctx)
|
group = async.NewAtomicGroup(ctx)
|
||||||
|
|
|
@ -34,10 +34,6 @@ type Token struct {
|
||||||
// to be traded.
|
// to be traded.
|
||||||
Decimals uint `json:"decimals"`
|
Decimals uint `json:"decimals"`
|
||||||
ChainID uint64 `json:"chainId"`
|
ChainID uint64 `json:"chainId"`
|
||||||
// PegSymbol indicates that the token is pegged to some fiat currency, using the
|
|
||||||
// ISO 4217 alphabetic code. For example, an empty string means it is not
|
|
||||||
// pegged, while "USD" means it's pegged to the United States Dollar.
|
|
||||||
PegSymbol string `json:"pegSymbol"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Token) IsNative() bool {
|
func (t *Token) IsNative() bool {
|
||||||
|
|
|
@ -11,7 +11,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"): &Token{
|
common.HexToAddress("0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"): &Token{
|
||||||
Address: common.HexToAddress("0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"),
|
Address: common.HexToAddress("0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"),
|
||||||
|
@ -20,7 +19,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"): &Token{
|
common.HexToAddress("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"): &Token{
|
||||||
Address: common.HexToAddress("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"),
|
Address: common.HexToAddress("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"),
|
||||||
|
@ -733,7 +731,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 6,
|
Decimals: 6,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x58b6a8a3302369daec383334672404ee733ab239"): &Token{
|
common.HexToAddress("0x58b6a8a3302369daec383334672404ee733ab239"): &Token{
|
||||||
Address: common.HexToAddress("0x58b6a8a3302369daec383334672404ee733ab239"),
|
Address: common.HexToAddress("0x58b6a8a3302369daec383334672404ee733ab239"),
|
||||||
|
@ -870,7 +867,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664"): &Token{
|
common.HexToAddress("0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664"): &Token{
|
||||||
Address: common.HexToAddress("0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664"),
|
Address: common.HexToAddress("0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664"),
|
||||||
|
@ -887,7 +883,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "XAU",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x865ec58b06bF6305B886793AA20A2da31D034E68"): &Token{
|
common.HexToAddress("0x865ec58b06bF6305B886793AA20A2da31D034E68"): &Token{
|
||||||
Address: common.HexToAddress("0x865ec58b06bF6305B886793AA20A2da31D034E68"),
|
Address: common.HexToAddress("0x865ec58b06bF6305B886793AA20A2da31D034E68"),
|
||||||
|
@ -944,7 +939,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "CAD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x6710c63432A2De02954fc0f851db07146a6c0312"): &Token{
|
common.HexToAddress("0x6710c63432A2De02954fc0f851db07146a6c0312"): &Token{
|
||||||
Address: common.HexToAddress("0x6710c63432A2De02954fc0f851db07146a6c0312"),
|
Address: common.HexToAddress("0x6710c63432A2De02954fc0f851db07146a6c0312"),
|
||||||
|
@ -985,7 +979,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"): &Token{
|
common.HexToAddress("0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"): &Token{
|
||||||
Address: common.HexToAddress("0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"),
|
Address: common.HexToAddress("0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"),
|
||||||
|
@ -1010,7 +1003,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "GBP",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e"): &Token{
|
common.HexToAddress("0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e"): &Token{
|
||||||
Address: common.HexToAddress("0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e"),
|
Address: common.HexToAddress("0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e"),
|
||||||
|
@ -1051,7 +1043,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 6,
|
Decimals: 6,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e"): &Token{
|
common.HexToAddress("0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e"): &Token{
|
||||||
Address: common.HexToAddress("0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e"),
|
Address: common.HexToAddress("0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e"),
|
||||||
|
@ -1092,7 +1083,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "AUD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x66497A283E0a007bA3974e837784C6AE323447de"): &Token{
|
common.HexToAddress("0x66497A283E0a007bA3974e837784C6AE323447de"): &Token{
|
||||||
Address: common.HexToAddress("0x66497A283E0a007bA3974e837784C6AE323447de"),
|
Address: common.HexToAddress("0x66497A283E0a007bA3974e837784C6AE323447de"),
|
||||||
|
@ -1181,7 +1171,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 6,
|
Decimals: 6,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986"): &Token{
|
common.HexToAddress("0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986"): &Token{
|
||||||
Address: common.HexToAddress("0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986"),
|
Address: common.HexToAddress("0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986"),
|
||||||
|
@ -1246,7 +1235,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643"): &Token{
|
common.HexToAddress("0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643"): &Token{
|
||||||
Address: common.HexToAddress("0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643"),
|
Address: common.HexToAddress("0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643"),
|
||||||
|
@ -1311,7 +1299,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 6,
|
Decimals: 6,
|
||||||
ChainID: 1,
|
ChainID: 1,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0xc944e90c64b2c07662a292be6244bdf05cda44a7"): &Token{
|
common.HexToAddress("0xc944e90c64b2c07662a292be6244bdf05cda44a7"): &Token{
|
||||||
Address: common.HexToAddress("0xc944e90c64b2c07662a292be6244bdf05cda44a7"),
|
Address: common.HexToAddress("0xc944e90c64b2c07662a292be6244bdf05cda44a7"),
|
||||||
|
@ -1470,7 +1457,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 6,
|
Decimals: 6,
|
||||||
ChainID: 5,
|
ChainID: 5,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x022e292b44b5a146f2e8ee36ff44d3dd863c915c"): &Token{
|
common.HexToAddress("0x022e292b44b5a146f2e8ee36ff44d3dd863c915c"): &Token{
|
||||||
Address: common.HexToAddress("0x022e292b44b5a146f2e8ee36ff44d3dd863c915c"),
|
Address: common.HexToAddress("0x022e292b44b5a146f2e8ee36ff44d3dd863c915c"),
|
||||||
|
@ -1513,7 +1499,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 6,
|
Decimals: 6,
|
||||||
ChainID: 10,
|
ChainID: 10,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
100: {
|
100: {
|
||||||
|
@ -1534,7 +1519,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 6,
|
Decimals: 6,
|
||||||
ChainID: 420,
|
ChainID: 420,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
42161: {
|
42161: {
|
||||||
|
@ -1545,7 +1529,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 42161,
|
ChainID: 42161,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"): &Token{
|
common.HexToAddress("0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"): &Token{
|
||||||
Address: common.HexToAddress("0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"),
|
Address: common.HexToAddress("0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"),
|
||||||
|
@ -1554,7 +1537,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 6,
|
Decimals: 6,
|
||||||
ChainID: 42161,
|
ChainID: 42161,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"): &Token{
|
common.HexToAddress("0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"): &Token{
|
||||||
Address: common.HexToAddress("0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"),
|
Address: common.HexToAddress("0xda10009cbd5d07dd0cecc66161fc93d7c9000da1"),
|
||||||
|
@ -1563,7 +1545,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 42161,
|
ChainID: 42161,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"): &Token{
|
common.HexToAddress("0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"): &Token{
|
||||||
Address: common.HexToAddress("0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"),
|
Address: common.HexToAddress("0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"),
|
||||||
|
@ -1604,7 +1585,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 42161,
|
ChainID: 42161,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x23a941036ae778ac51ab04cea08ed6e2fe103614"): &Token{
|
common.HexToAddress("0x23a941036ae778ac51ab04cea08ed6e2fe103614"): &Token{
|
||||||
Address: common.HexToAddress("0x23a941036ae778ac51ab04cea08ed6e2fe103614"),
|
Address: common.HexToAddress("0x23a941036ae778ac51ab04cea08ed6e2fe103614"),
|
||||||
|
@ -1621,7 +1601,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 18,
|
Decimals: 18,
|
||||||
ChainID: 42161,
|
ChainID: 42161,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x11cdb42b0eb46d95f990bedd4695a6e3fa034978"): &Token{
|
common.HexToAddress("0x11cdb42b0eb46d95f990bedd4695a6e3fa034978"): &Token{
|
||||||
Address: common.HexToAddress("0x11cdb42b0eb46d95f990bedd4695a6e3fa034978"),
|
Address: common.HexToAddress("0x11cdb42b0eb46d95f990bedd4695a6e3fa034978"),
|
||||||
|
@ -1640,7 +1619,6 @@ var tokenStore = map[uint64]map[common.Address]*Token{
|
||||||
Color: "#f8f8f8",
|
Color: "#f8f8f8",
|
||||||
Decimals: 6,
|
Decimals: 6,
|
||||||
ChainID: 421613,
|
ChainID: 421613,
|
||||||
PegSymbol: "USD",
|
|
||||||
},
|
},
|
||||||
common.HexToAddress("0x265B25e22bcd7f10a5bD6E6410F10537Cc7567e8"): &Token{
|
common.HexToAddress("0x265B25e22bcd7f10a5bD6E6410F10537Cc7567e8"): &Token{
|
||||||
Address: common.HexToAddress("0x265B25e22bcd7f10a5bD6E6410F10537Cc7567e8"),
|
Address: common.HexToAddress("0x265B25e22bcd7f10a5bD6E6410F10537Cc7567e8"),
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
|
||||||
*.o
|
|
||||||
*.a
|
|
||||||
*.so
|
|
||||||
|
|
||||||
# Folders
|
|
||||||
_obj
|
|
||||||
_test
|
|
||||||
|
|
||||||
# Architecture specific extensions/prefixes
|
|
||||||
*.[568vq]
|
|
||||||
[568vq].out
|
|
||||||
|
|
||||||
*.cgo1.go
|
|
||||||
*.cgo2.c
|
|
||||||
_cgo_defun.c
|
|
||||||
_cgo_gotypes.go
|
|
||||||
_cgo_export.*
|
|
||||||
|
|
||||||
_testmain.go
|
|
||||||
|
|
||||||
*.exe
|
|
||||||
*.test
|
|
|
@ -1,21 +0,0 @@
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014 Ryan Graham
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
|
@ -1,5 +0,0 @@
|
||||||
test: constants.go
|
|
||||||
go test -v
|
|
||||||
|
|
||||||
constants.go: src/iso4217-table.xml src/update.go
|
|
||||||
go run src/update.go < src/iso4217-table.xml | gofmt > $@
|
|
|
@ -1,6 +0,0 @@
|
||||||
iso4217
|
|
||||||
=======
|
|
||||||
|
|
||||||
[![Go Reference](https://pkg.go.dev/badge/github.com/rmg/iso4217.svg)](https://pkg.go.dev/github.com/rmg/iso4217)
|
|
||||||
|
|
||||||
Golang convenience library containing ISO 4217 currency codes
|
|
|
@ -1,570 +0,0 @@
|
||||||
// Package iso4217 is a convenience library containing ISO 4217 currency codes
|
|
||||||
package iso4217
|
|
||||||
|
|
||||||
var names = map[int]string{
|
|
||||||
0: "",
|
|
||||||
8: "ALL",
|
|
||||||
12: "DZD",
|
|
||||||
32: "ARS",
|
|
||||||
36: "AUD",
|
|
||||||
44: "BSD",
|
|
||||||
48: "BHD",
|
|
||||||
50: "BDT",
|
|
||||||
51: "AMD",
|
|
||||||
52: "BBD",
|
|
||||||
60: "BMD",
|
|
||||||
64: "BTN",
|
|
||||||
68: "BOB",
|
|
||||||
72: "BWP",
|
|
||||||
84: "BZD",
|
|
||||||
90: "SBD",
|
|
||||||
96: "BND",
|
|
||||||
104: "MMK",
|
|
||||||
108: "BIF",
|
|
||||||
116: "KHR",
|
|
||||||
124: "CAD",
|
|
||||||
132: "CVE",
|
|
||||||
136: "KYD",
|
|
||||||
144: "LKR",
|
|
||||||
152: "CLP",
|
|
||||||
156: "CNY",
|
|
||||||
170: "COP",
|
|
||||||
174: "KMF",
|
|
||||||
188: "CRC",
|
|
||||||
191: "HRK",
|
|
||||||
192: "CUP",
|
|
||||||
203: "CZK",
|
|
||||||
208: "DKK",
|
|
||||||
214: "DOP",
|
|
||||||
222: "SVC",
|
|
||||||
230: "ETB",
|
|
||||||
232: "ERN",
|
|
||||||
238: "FKP",
|
|
||||||
242: "FJD",
|
|
||||||
262: "DJF",
|
|
||||||
270: "GMD",
|
|
||||||
292: "GIP",
|
|
||||||
320: "GTQ",
|
|
||||||
324: "GNF",
|
|
||||||
328: "GYD",
|
|
||||||
332: "HTG",
|
|
||||||
340: "HNL",
|
|
||||||
344: "HKD",
|
|
||||||
348: "HUF",
|
|
||||||
352: "ISK",
|
|
||||||
356: "INR",
|
|
||||||
360: "IDR",
|
|
||||||
364: "IRR",
|
|
||||||
368: "IQD",
|
|
||||||
376: "ILS",
|
|
||||||
388: "JMD",
|
|
||||||
392: "JPY",
|
|
||||||
398: "KZT",
|
|
||||||
400: "JOD",
|
|
||||||
404: "KES",
|
|
||||||
408: "KPW",
|
|
||||||
410: "KRW",
|
|
||||||
414: "KWD",
|
|
||||||
417: "KGS",
|
|
||||||
418: "LAK",
|
|
||||||
422: "LBP",
|
|
||||||
426: "LSL",
|
|
||||||
430: "LRD",
|
|
||||||
434: "LYD",
|
|
||||||
446: "MOP",
|
|
||||||
454: "MWK",
|
|
||||||
458: "MYR",
|
|
||||||
462: "MVR",
|
|
||||||
480: "MUR",
|
|
||||||
484: "MXN",
|
|
||||||
496: "MNT",
|
|
||||||
498: "MDL",
|
|
||||||
504: "MAD",
|
|
||||||
512: "OMR",
|
|
||||||
516: "NAD",
|
|
||||||
524: "NPR",
|
|
||||||
532: "ANG",
|
|
||||||
533: "AWG",
|
|
||||||
548: "VUV",
|
|
||||||
554: "NZD",
|
|
||||||
558: "NIO",
|
|
||||||
566: "NGN",
|
|
||||||
578: "NOK",
|
|
||||||
586: "PKR",
|
|
||||||
590: "PAB",
|
|
||||||
598: "PGK",
|
|
||||||
600: "PYG",
|
|
||||||
604: "PEN",
|
|
||||||
608: "PHP",
|
|
||||||
634: "QAR",
|
|
||||||
643: "RUB",
|
|
||||||
646: "RWF",
|
|
||||||
654: "SHP",
|
|
||||||
682: "SAR",
|
|
||||||
690: "SCR",
|
|
||||||
694: "SLL",
|
|
||||||
702: "SGD",
|
|
||||||
704: "VND",
|
|
||||||
706: "SOS",
|
|
||||||
710: "ZAR",
|
|
||||||
728: "SSP",
|
|
||||||
748: "SZL",
|
|
||||||
752: "SEK",
|
|
||||||
756: "CHF",
|
|
||||||
760: "SYP",
|
|
||||||
764: "THB",
|
|
||||||
776: "TOP",
|
|
||||||
780: "TTD",
|
|
||||||
784: "AED",
|
|
||||||
788: "TND",
|
|
||||||
800: "UGX",
|
|
||||||
807: "MKD",
|
|
||||||
818: "EGP",
|
|
||||||
826: "GBP",
|
|
||||||
834: "TZS",
|
|
||||||
840: "USD",
|
|
||||||
858: "UYU",
|
|
||||||
860: "UZS",
|
|
||||||
882: "WST",
|
|
||||||
886: "YER",
|
|
||||||
901: "TWD",
|
|
||||||
925: "SLE",
|
|
||||||
926: "VED",
|
|
||||||
927: "UYW",
|
|
||||||
928: "VES",
|
|
||||||
929: "MRU",
|
|
||||||
930: "STN",
|
|
||||||
931: "CUC",
|
|
||||||
932: "ZWL",
|
|
||||||
933: "BYN",
|
|
||||||
934: "TMT",
|
|
||||||
936: "GHS",
|
|
||||||
938: "SDG",
|
|
||||||
940: "UYI",
|
|
||||||
941: "RSD",
|
|
||||||
943: "MZN",
|
|
||||||
944: "AZN",
|
|
||||||
946: "RON",
|
|
||||||
947: "CHE",
|
|
||||||
948: "CHW",
|
|
||||||
949: "TRY",
|
|
||||||
950: "XAF",
|
|
||||||
951: "XCD",
|
|
||||||
952: "XOF",
|
|
||||||
953: "XPF",
|
|
||||||
955: "XBA",
|
|
||||||
956: "XBB",
|
|
||||||
957: "XBC",
|
|
||||||
958: "XBD",
|
|
||||||
959: "XAU",
|
|
||||||
960: "XDR",
|
|
||||||
961: "XAG",
|
|
||||||
962: "XPT",
|
|
||||||
963: "XTS",
|
|
||||||
964: "XPD",
|
|
||||||
965: "XUA",
|
|
||||||
967: "ZMW",
|
|
||||||
968: "SRD",
|
|
||||||
969: "MGA",
|
|
||||||
970: "COU",
|
|
||||||
971: "AFN",
|
|
||||||
972: "TJS",
|
|
||||||
973: "AOA",
|
|
||||||
975: "BGN",
|
|
||||||
976: "CDF",
|
|
||||||
977: "BAM",
|
|
||||||
978: "EUR",
|
|
||||||
979: "MXV",
|
|
||||||
980: "UAH",
|
|
||||||
981: "GEL",
|
|
||||||
984: "BOV",
|
|
||||||
985: "PLN",
|
|
||||||
986: "BRL",
|
|
||||||
990: "CLF",
|
|
||||||
994: "XSU",
|
|
||||||
997: "USN",
|
|
||||||
999: "XXX",
|
|
||||||
}
|
|
||||||
|
|
||||||
var codes = map[string]int{
|
|
||||||
"": 0,
|
|
||||||
"ALL": 8,
|
|
||||||
"DZD": 12,
|
|
||||||
"ARS": 32,
|
|
||||||
"AUD": 36,
|
|
||||||
"BSD": 44,
|
|
||||||
"BHD": 48,
|
|
||||||
"BDT": 50,
|
|
||||||
"AMD": 51,
|
|
||||||
"BBD": 52,
|
|
||||||
"BMD": 60,
|
|
||||||
"BTN": 64,
|
|
||||||
"BOB": 68,
|
|
||||||
"BWP": 72,
|
|
||||||
"BZD": 84,
|
|
||||||
"SBD": 90,
|
|
||||||
"BND": 96,
|
|
||||||
"MMK": 104,
|
|
||||||
"BIF": 108,
|
|
||||||
"KHR": 116,
|
|
||||||
"CAD": 124,
|
|
||||||
"CVE": 132,
|
|
||||||
"KYD": 136,
|
|
||||||
"LKR": 144,
|
|
||||||
"CLP": 152,
|
|
||||||
"CNY": 156,
|
|
||||||
"COP": 170,
|
|
||||||
"KMF": 174,
|
|
||||||
"CRC": 188,
|
|
||||||
"HRK": 191,
|
|
||||||
"CUP": 192,
|
|
||||||
"CZK": 203,
|
|
||||||
"DKK": 208,
|
|
||||||
"DOP": 214,
|
|
||||||
"SVC": 222,
|
|
||||||
"ETB": 230,
|
|
||||||
"ERN": 232,
|
|
||||||
"FKP": 238,
|
|
||||||
"FJD": 242,
|
|
||||||
"DJF": 262,
|
|
||||||
"GMD": 270,
|
|
||||||
"GIP": 292,
|
|
||||||
"GTQ": 320,
|
|
||||||
"GNF": 324,
|
|
||||||
"GYD": 328,
|
|
||||||
"HTG": 332,
|
|
||||||
"HNL": 340,
|
|
||||||
"HKD": 344,
|
|
||||||
"HUF": 348,
|
|
||||||
"ISK": 352,
|
|
||||||
"INR": 356,
|
|
||||||
"IDR": 360,
|
|
||||||
"IRR": 364,
|
|
||||||
"IQD": 368,
|
|
||||||
"ILS": 376,
|
|
||||||
"JMD": 388,
|
|
||||||
"JPY": 392,
|
|
||||||
"KZT": 398,
|
|
||||||
"JOD": 400,
|
|
||||||
"KES": 404,
|
|
||||||
"KPW": 408,
|
|
||||||
"KRW": 410,
|
|
||||||
"KWD": 414,
|
|
||||||
"KGS": 417,
|
|
||||||
"LAK": 418,
|
|
||||||
"LBP": 422,
|
|
||||||
"LSL": 426,
|
|
||||||
"LRD": 430,
|
|
||||||
"LYD": 434,
|
|
||||||
"MOP": 446,
|
|
||||||
"MWK": 454,
|
|
||||||
"MYR": 458,
|
|
||||||
"MVR": 462,
|
|
||||||
"MUR": 480,
|
|
||||||
"MXN": 484,
|
|
||||||
"MNT": 496,
|
|
||||||
"MDL": 498,
|
|
||||||
"MAD": 504,
|
|
||||||
"OMR": 512,
|
|
||||||
"NAD": 516,
|
|
||||||
"NPR": 524,
|
|
||||||
"ANG": 532,
|
|
||||||
"AWG": 533,
|
|
||||||
"VUV": 548,
|
|
||||||
"NZD": 554,
|
|
||||||
"NIO": 558,
|
|
||||||
"NGN": 566,
|
|
||||||
"NOK": 578,
|
|
||||||
"PKR": 586,
|
|
||||||
"PAB": 590,
|
|
||||||
"PGK": 598,
|
|
||||||
"PYG": 600,
|
|
||||||
"PEN": 604,
|
|
||||||
"PHP": 608,
|
|
||||||
"QAR": 634,
|
|
||||||
"RUB": 643,
|
|
||||||
"RWF": 646,
|
|
||||||
"SHP": 654,
|
|
||||||
"SAR": 682,
|
|
||||||
"SCR": 690,
|
|
||||||
"SLL": 694,
|
|
||||||
"SGD": 702,
|
|
||||||
"VND": 704,
|
|
||||||
"SOS": 706,
|
|
||||||
"ZAR": 710,
|
|
||||||
"SSP": 728,
|
|
||||||
"SZL": 748,
|
|
||||||
"SEK": 752,
|
|
||||||
"CHF": 756,
|
|
||||||
"SYP": 760,
|
|
||||||
"THB": 764,
|
|
||||||
"TOP": 776,
|
|
||||||
"TTD": 780,
|
|
||||||
"AED": 784,
|
|
||||||
"TND": 788,
|
|
||||||
"UGX": 800,
|
|
||||||
"MKD": 807,
|
|
||||||
"EGP": 818,
|
|
||||||
"GBP": 826,
|
|
||||||
"TZS": 834,
|
|
||||||
"USD": 840,
|
|
||||||
"UYU": 858,
|
|
||||||
"UZS": 860,
|
|
||||||
"WST": 882,
|
|
||||||
"YER": 886,
|
|
||||||
"TWD": 901,
|
|
||||||
"SLE": 925,
|
|
||||||
"VED": 926,
|
|
||||||
"UYW": 927,
|
|
||||||
"VES": 928,
|
|
||||||
"MRU": 929,
|
|
||||||
"STN": 930,
|
|
||||||
"CUC": 931,
|
|
||||||
"ZWL": 932,
|
|
||||||
"BYN": 933,
|
|
||||||
"TMT": 934,
|
|
||||||
"GHS": 936,
|
|
||||||
"SDG": 938,
|
|
||||||
"UYI": 940,
|
|
||||||
"RSD": 941,
|
|
||||||
"MZN": 943,
|
|
||||||
"AZN": 944,
|
|
||||||
"RON": 946,
|
|
||||||
"CHE": 947,
|
|
||||||
"CHW": 948,
|
|
||||||
"TRY": 949,
|
|
||||||
"XAF": 950,
|
|
||||||
"XCD": 951,
|
|
||||||
"XOF": 952,
|
|
||||||
"XPF": 953,
|
|
||||||
"XBA": 955,
|
|
||||||
"XBB": 956,
|
|
||||||
"XBC": 957,
|
|
||||||
"XBD": 958,
|
|
||||||
"XAU": 959,
|
|
||||||
"XDR": 960,
|
|
||||||
"XAG": 961,
|
|
||||||
"XPT": 962,
|
|
||||||
"XTS": 963,
|
|
||||||
"XPD": 964,
|
|
||||||
"XUA": 965,
|
|
||||||
"ZMW": 967,
|
|
||||||
"SRD": 968,
|
|
||||||
"MGA": 969,
|
|
||||||
"COU": 970,
|
|
||||||
"AFN": 971,
|
|
||||||
"TJS": 972,
|
|
||||||
"AOA": 973,
|
|
||||||
"BGN": 975,
|
|
||||||
"CDF": 976,
|
|
||||||
"BAM": 977,
|
|
||||||
"EUR": 978,
|
|
||||||
"MXV": 979,
|
|
||||||
"UAH": 980,
|
|
||||||
"GEL": 981,
|
|
||||||
"BOV": 984,
|
|
||||||
"PLN": 985,
|
|
||||||
"BRL": 986,
|
|
||||||
"CLF": 990,
|
|
||||||
"XSU": 994,
|
|
||||||
"USN": 997,
|
|
||||||
"XXX": 999,
|
|
||||||
}
|
|
||||||
|
|
||||||
var minorUnits = map[int]int{
|
|
||||||
0: 0,
|
|
||||||
8: 2,
|
|
||||||
12: 2,
|
|
||||||
32: 2,
|
|
||||||
36: 2,
|
|
||||||
44: 2,
|
|
||||||
48: 3,
|
|
||||||
50: 2,
|
|
||||||
51: 2,
|
|
||||||
52: 2,
|
|
||||||
60: 2,
|
|
||||||
64: 2,
|
|
||||||
68: 2,
|
|
||||||
72: 2,
|
|
||||||
84: 2,
|
|
||||||
90: 2,
|
|
||||||
96: 2,
|
|
||||||
104: 2,
|
|
||||||
108: 0,
|
|
||||||
116: 2,
|
|
||||||
124: 2,
|
|
||||||
132: 2,
|
|
||||||
136: 2,
|
|
||||||
144: 2,
|
|
||||||
152: 0,
|
|
||||||
156: 2,
|
|
||||||
170: 2,
|
|
||||||
174: 0,
|
|
||||||
188: 2,
|
|
||||||
191: 2,
|
|
||||||
192: 2,
|
|
||||||
203: 2,
|
|
||||||
208: 2,
|
|
||||||
214: 2,
|
|
||||||
222: 2,
|
|
||||||
230: 2,
|
|
||||||
232: 2,
|
|
||||||
238: 2,
|
|
||||||
242: 2,
|
|
||||||
262: 0,
|
|
||||||
270: 2,
|
|
||||||
292: 2,
|
|
||||||
320: 2,
|
|
||||||
324: 0,
|
|
||||||
328: 2,
|
|
||||||
332: 2,
|
|
||||||
340: 2,
|
|
||||||
344: 2,
|
|
||||||
348: 2,
|
|
||||||
352: 0,
|
|
||||||
356: 2,
|
|
||||||
360: 2,
|
|
||||||
364: 2,
|
|
||||||
368: 3,
|
|
||||||
376: 2,
|
|
||||||
388: 2,
|
|
||||||
392: 0,
|
|
||||||
398: 2,
|
|
||||||
400: 3,
|
|
||||||
404: 2,
|
|
||||||
408: 2,
|
|
||||||
410: 0,
|
|
||||||
414: 3,
|
|
||||||
417: 2,
|
|
||||||
418: 2,
|
|
||||||
422: 2,
|
|
||||||
426: 2,
|
|
||||||
430: 2,
|
|
||||||
434: 3,
|
|
||||||
446: 2,
|
|
||||||
454: 2,
|
|
||||||
458: 2,
|
|
||||||
462: 2,
|
|
||||||
480: 2,
|
|
||||||
484: 2,
|
|
||||||
496: 2,
|
|
||||||
498: 2,
|
|
||||||
504: 2,
|
|
||||||
512: 3,
|
|
||||||
516: 2,
|
|
||||||
524: 2,
|
|
||||||
532: 2,
|
|
||||||
533: 2,
|
|
||||||
548: 0,
|
|
||||||
554: 2,
|
|
||||||
558: 2,
|
|
||||||
566: 2,
|
|
||||||
578: 2,
|
|
||||||
586: 2,
|
|
||||||
590: 2,
|
|
||||||
598: 2,
|
|
||||||
600: 0,
|
|
||||||
604: 2,
|
|
||||||
608: 2,
|
|
||||||
634: 2,
|
|
||||||
643: 2,
|
|
||||||
646: 0,
|
|
||||||
654: 2,
|
|
||||||
682: 2,
|
|
||||||
690: 2,
|
|
||||||
694: 2,
|
|
||||||
702: 2,
|
|
||||||
704: 0,
|
|
||||||
706: 2,
|
|
||||||
710: 2,
|
|
||||||
728: 2,
|
|
||||||
748: 2,
|
|
||||||
752: 2,
|
|
||||||
756: 2,
|
|
||||||
760: 2,
|
|
||||||
764: 2,
|
|
||||||
776: 2,
|
|
||||||
780: 2,
|
|
||||||
784: 2,
|
|
||||||
788: 3,
|
|
||||||
800: 0,
|
|
||||||
807: 2,
|
|
||||||
818: 2,
|
|
||||||
826: 2,
|
|
||||||
834: 2,
|
|
||||||
840: 2,
|
|
||||||
858: 2,
|
|
||||||
860: 2,
|
|
||||||
882: 2,
|
|
||||||
886: 2,
|
|
||||||
901: 2,
|
|
||||||
925: 2,
|
|
||||||
926: 2,
|
|
||||||
927: 4,
|
|
||||||
928: 2,
|
|
||||||
929: 2,
|
|
||||||
930: 2,
|
|
||||||
931: 2,
|
|
||||||
932: 2,
|
|
||||||
933: 2,
|
|
||||||
934: 2,
|
|
||||||
936: 2,
|
|
||||||
938: 2,
|
|
||||||
940: 0,
|
|
||||||
941: 2,
|
|
||||||
943: 2,
|
|
||||||
944: 2,
|
|
||||||
946: 2,
|
|
||||||
947: 2,
|
|
||||||
948: 2,
|
|
||||||
949: 2,
|
|
||||||
950: 0,
|
|
||||||
951: 2,
|
|
||||||
952: 0,
|
|
||||||
953: 0,
|
|
||||||
955: 0,
|
|
||||||
956: 0,
|
|
||||||
957: 0,
|
|
||||||
958: 0,
|
|
||||||
959: 0,
|
|
||||||
960: 0,
|
|
||||||
961: 0,
|
|
||||||
962: 0,
|
|
||||||
963: 0,
|
|
||||||
964: 0,
|
|
||||||
965: 0,
|
|
||||||
967: 2,
|
|
||||||
968: 2,
|
|
||||||
969: 2,
|
|
||||||
970: 2,
|
|
||||||
971: 2,
|
|
||||||
972: 2,
|
|
||||||
973: 2,
|
|
||||||
975: 2,
|
|
||||||
976: 2,
|
|
||||||
977: 2,
|
|
||||||
978: 2,
|
|
||||||
979: 2,
|
|
||||||
980: 2,
|
|
||||||
981: 2,
|
|
||||||
984: 2,
|
|
||||||
985: 2,
|
|
||||||
986: 2,
|
|
||||||
990: 4,
|
|
||||||
994: 0,
|
|
||||||
997: 2,
|
|
||||||
999: 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
// ByCode resolves the given code to the 3 character string and the number of
|
|
||||||
// minor unit digits to display for the given currency.
|
|
||||||
func ByCode(n int) (string, int) {
|
|
||||||
return names[n], minorUnits[n]
|
|
||||||
}
|
|
||||||
|
|
||||||
// ByName resolves the given name to the numeric code and the number of minor
|
|
||||||
// unit digits to display for the given currency.
|
|
||||||
func ByName(s string) (int, int) {
|
|
||||||
code := codes[s]
|
|
||||||
return code, minorUnits[code]
|
|
||||||
}
|
|
|
@ -865,9 +865,6 @@ github.com/rivo/uniseg
|
||||||
# github.com/rjeczalik/notify v0.9.2
|
# github.com/rjeczalik/notify v0.9.2
|
||||||
## explicit
|
## explicit
|
||||||
github.com/rjeczalik/notify
|
github.com/rjeczalik/notify
|
||||||
# github.com/rmg/iso4217 v1.0.0
|
|
||||||
## explicit; go 1.12
|
|
||||||
github.com/rmg/iso4217
|
|
||||||
# github.com/rs/cors v1.7.0
|
# github.com/rs/cors v1.7.0
|
||||||
## explicit
|
## explicit
|
||||||
github.com/rs/cors
|
github.com/rs/cors
|
||||||
|
|
Loading…
Reference in New Issue