Skip to content

Instantly share code, notes, and snippets.

@erdesigns-eu
Created November 2, 2022 10:39
Show Gist options
  • Save erdesigns-eu/90d2e176832ef5a645babc32f3bc1179 to your computer and use it in GitHub Desktop.
Save erdesigns-eu/90d2e176832ef5a645babc32f3bc1179 to your computer and use it in GitHub Desktop.
CoinLayer API Wrapper for Javascript
/**
* CoinLayer API - Cryptocurrency exchange rates etc..
* for use in the browser.
*
* License: MIT
* Author: Ernst Reidinga - ERDesigns - 26/10/2022
*/
class CoinLayerAPIError extends Error {
/**
* Create new CoinLayerAPI Error instance
* @param {Object} error
*/
constructor(error) {
super();
this.code = error.code;
this.name = `CoinLayerAPIError: ${error.code}`;
this.message = error.message;
}
}
export class CoinLayerAPI {
__apiKey;
/**
* Create new Coin Layer API instance
* @param {String} key
*/
constructor(key) {
if (!key || !key.length) {
throw new CoinLayerAPIError({ message: "No api key defined!", code: 1 });
}
this.__apiKey = key;
}
/**
* List of available crypto coins
*/
get coins() {
return [
{
symbol: "611",
name: "SixEleven",
},
{
symbol: "ABC",
name: "AB-Chain",
},
{
symbol: "ACP",
name: "Anarchists Prime",
},
{
symbol: "ACT",
name: "ACT",
},
{
symbol: "ACT*",
name: "Achain",
},
{
symbol: "ADA",
name: "Cardano",
},
{
symbol: "ADCN",
name: "Asiadigicoin",
},
{
symbol: "ADL",
name: "Adelphoi",
},
{
symbol: "ADX",
name: "AdEx",
},
{
symbol: "ADZ",
name: "Adzcoin",
},
{
symbol: "AE",
name: "Aeternity",
},
{
symbol: "AGI",
name: "SingularityNET",
},
{
symbol: "AIB",
name: "AdvancedInternetBlock",
},
{
symbol: "AIDOC",
name: "AI Doctor",
},
{
symbol: "AION",
name: "Aion",
},
{
symbol: "AIR",
name: "AirToken",
},
{
symbol: "ALT",
name: "ALTcoin",
},
{
symbol: "AMB",
name: "Ambrosus",
},
{
symbol: "AMM",
name: "MicroMoney",
},
{
symbol: "ANT",
name: "Aragon",
},
{
symbol: "APC",
name: "AlpaCoin",
},
{
symbol: "APPC",
name: "AppCoins",
},
{
symbol: "ARC",
name: "ArcticCoin",
},
{
symbol: "ARCT",
name: "ArbitrageCT",
},
{
symbol: "ARDR",
name: "Ardor",
},
{
symbol: "ARK",
name: "ARK",
},
{
symbol: "ARN",
name: "Aeron",
},
{
symbol: "ASAFE2",
name: "Allsafe",
},
{
symbol: "AST",
name: "AirSwap",
},
{
symbol: "ATB",
name: "ATB coin",
},
{
symbol: "ATM",
name: "ATMChain",
},
{
symbol: "AURS",
name: "Aureus",
},
{
symbol: "AVT",
name: "AventCoin",
},
{
symbol: "BAR",
name: "TBIS token",
},
{
symbol: "BASH",
name: "LuckChain",
},
{
symbol: "BAT",
name: "Basic Attention Token",
},
{
symbol: "BAY",
name: "BitBay",
},
{
symbol: "BBP",
name: "BiblePay",
},
{
symbol: "BCD",
name: "Bitcoin Diamond",
},
{
symbol: "BCH",
name: "Bitcoin Cash / BCC",
},
{
symbol: "BCN",
name: "ByteCoin",
},
{
symbol: "BCPT",
name: "BlockMason Credit Protocol",
},
{
symbol: "BEE",
name: "Bee Token",
},
{
symbol: "BIO",
name: "Biocoin",
},
{
symbol: "BLC",
name: "BlakeCoin",
},
{
symbol: "BLOCK",
name: "BlockNet",
},
{
symbol: "BLU",
name: "BlueCoin",
},
{
symbol: "BLZ",
name: "Bluzelle",
},
{
symbol: "BMC",
name: "Blackmoon Crypto",
},
{
symbol: "BNB",
name: "Binance Coin",
},
{
symbol: "BNT",
name: "Bancor Network Token",
},
{
symbol: "BOST",
name: "BoostCoin",
},
{
symbol: "BQ",
name: "Bitqy",
},
{
symbol: "BQX",
name: "Ethos",
},
{
symbol: "BRD",
name: "Bread token",
},
{
symbol: "BRIT",
name: "BritCoin",
},
{
symbol: "BT1",
name: "Bitfinex Bitcoin Future",
},
{
symbol: "BT2",
name: "Bitcoin SegWit2X",
},
{
symbol: "BTC",
name: "Bitcoin",
},
{
symbol: "BTCA",
name: "Bitair",
},
{
symbol: "BTCS",
name: "Bitcoin Scrypt",
},
{
symbol: "BTCZ",
name: "BitcoinZ",
},
{
symbol: "BTG",
name: "Bitcoin Gold",
},
{
symbol: "BTLC",
name: "BitLuckCoin",
},
{
symbol: "BTM",
name: "BitMark",
},
{
symbol: "BTM*",
name: "Bytom",
},
{
symbol: "BTQ",
name: "BitQuark",
},
{
symbol: "BTS",
name: "Bitshares",
},
{
symbol: "BTX",
name: "Bitcore",
},
{
symbol: "BURST",
name: "BurstCoin",
},
{
symbol: "CALC",
name: "CaliphCoin",
},
{
symbol: "CAS",
name: "Cashaa",
},
{
symbol: "CAT",
name: "BlockCAT",
},
{
symbol: "CCRB",
name: "CryptoCarbon",
},
{
symbol: "CDT",
name: "CoinDash",
},
{
symbol: "CESC",
name: "Crypto Escudo",
},
{
symbol: "CHAT",
name: "ChatCoin",
},
{
symbol: "CJ",
name: "CryptoJacks",
},
{
symbol: "CL",
name: "CoinLancer",
},
{
symbol: "CLD",
name: "Cloud",
},
{
symbol: "CLOAK",
name: "CloakCoin",
},
{
symbol: "CMT*",
name: "CyberMiles",
},
{
symbol: "CND",
name: "Cindicator",
},
{
symbol: "CNX",
name: "Cryptonex",
},
{
symbol: "CPC",
name: "CapriCoin",
},
{
symbol: "CRAVE",
name: "CraveCoin",
},
{
symbol: "CRC",
name: "CrowdCoin",
},
{
symbol: "CRE",
name: "Credits",
},
{
symbol: "CRW",
name: "Crown Coin",
},
{
symbol: "CTO",
name: "Crypto",
},
{
symbol: "CTR",
name: "Centra",
},
{
symbol: "CVC",
name: "Civic",
},
{
symbol: "DAS",
name: "DAS",
},
{
symbol: "DASH",
name: "DigitalCash",
},
{
symbol: "DAT",
name: "Datum",
},
{
symbol: "DATA",
name: "Streamr DATAcoin",
},
{
symbol: "DBC",
name: "DeepBrain Chain",
},
{
symbol: "DBET",
name: "Decent.bet",
},
{
symbol: "DCN",
name: "Dentacoin",
},
{
symbol: "DCR",
name: "Decred",
},
{
symbol: "DCT",
name: "Decent",
},
{
symbol: "DEEP",
name: "Deep Gold",
},
{
symbol: "DENT",
name: "Dent",
},
{
symbol: "DGB",
name: "DigiByte",
},
{
symbol: "DGD",
name: "Digix DAO",
},
{
symbol: "DIM",
name: "DIMCOIN",
},
{
symbol: "DIME",
name: "DimeCoin",
},
{
symbol: "DMD",
name: "Diamond",
},
{
symbol: "DNT",
name: "district0x",
},
{
symbol: "DOGE",
name: "Dogecoin",
},
{
symbol: "DRGN",
name: "Dragonchain",
},
{
symbol: "DRZ",
name: "Droidz",
},
{
symbol: "DSH",
name: "Dashcoin",
},
{
symbol: "DTA",
name: "Data",
},
{
symbol: "EC",
name: "Eclipse",
},
{
symbol: "EDG",
name: "Edgeless",
},
{
symbol: "EDO",
name: "Eidoo",
},
{
symbol: "EDR",
name: "E-Dinar Coin",
},
{
symbol: "EKO",
name: "EchoLink",
},
{
symbol: "ELA",
name: "Elastos",
},
{
symbol: "ELF",
name: "aelf",
},
{
symbol: "EMC",
name: "Emercoin",
},
{
symbol: "EMGO",
name: "MobileGo",
},
{
symbol: "ENG",
name: "Enigma",
},
{
symbol: "ENJ",
name: "Enjin Coin",
},
{
symbol: "EOS",
name: "EOS",
},
{
symbol: "ERT",
name: "Esports.com",
},
{
symbol: "ETC",
name: "Ethereum Classic",
},
{
symbol: "ETH",
name: "Ethereum",
},
{
symbol: "ETN",
name: "Electroneum",
},
{
symbol: "ETP",
name: "Metaverse",
},
{
symbol: "ETT",
name: "EncryptoTel",
},
{
symbol: "EVR",
name: "Everus",
},
{
symbol: "EVX",
name: "Everex",
},
{
symbol: "FCT",
name: "Factoids",
},
{
symbol: "FLP",
name: "Gameflip",
},
{
symbol: "FOTA",
name: "Fortuna",
},
{
symbol: "FRST",
name: "FirstCoin",
},
{
symbol: "FUEL",
name: "Etherparty",
},
{
symbol: "FUN",
name: "FunFair",
},
{
symbol: "FUNC",
name: "FunCoin",
},
{
symbol: "FUTC",
name: "FutCoin",
},
{
symbol: "GAME",
name: "Gamecredits",
},
{
symbol: "GAS",
name: "Gas",
},
{
symbol: "GBYTE",
name: "Byteball",
},
{
symbol: "GMX",
name: "Goldmaxcoin",
},
{
symbol: "GNO",
name: "Gnosis",
},
{
symbol: "GNT",
name: "Golem Network Token",
},
{
symbol: "GNX",
name: "Genaro Network",
},
{
symbol: "GRC",
name: "GridCoin",
},
{
symbol: "GRS",
name: "Groestlcoin ",
},
{
symbol: "GRWI",
name: "Growers International",
},
{
symbol: "GTC",
name: "Game",
},
{
symbol: "GTO",
name: "GIFTO",
},
{
symbol: "GUP",
name: "Guppy",
},
{
symbol: "GVT",
name: "Genesis Vision",
},
{
symbol: "GXS",
name: "GXShares",
},
{
symbol: "HAC",
name: "Hackspace Capital",
},
{
symbol: "HNC",
name: "Hellenic Coin",
},
{
symbol: "HSR",
name: "Hshare",
},
{
symbol: "HST",
name: "Decision Token",
},
{
symbol: "HVN",
name: "Hive Project",
},
{
symbol: "ICN",
name: "Iconomi",
},
{
symbol: "ICOS",
name: "ICOBox",
},
{
symbol: "ICX",
name: "ICON Project",
},
{
symbol: "IGNIS",
name: "Ignis",
},
{
symbol: "ILC",
name: "ILCoin",
},
{
symbol: "INK",
name: "Ink",
},
{
symbol: "INS",
name: "INS Ecosystem",
},
{
symbol: "INSN",
name: "Insane Coin",
},
{
symbol: "INT",
name: "Internet Node Token",
},
{
symbol: "IOP",
name: "Internet of People",
},
{
symbol: "IOST",
name: "IOS token",
},
{
symbol: "ITC",
name: "IoT Chain",
},
{
symbol: "KCS",
name: "Kucoin",
},
{
symbol: "KICK",
name: "KickCoin",
},
{
symbol: "KIN",
name: "Kin",
},
{
symbol: "KLC",
name: "KiloCoin",
},
{
symbol: "KMD",
name: "Komodo",
},
{
symbol: "KNC",
name: "Kyber Network",
},
{
symbol: "KRB",
name: "Karbo",
},
{
symbol: "LA",
name: "LATOKEN",
},
{
symbol: "LEND",
name: "EthLend",
},
{
symbol: "LEO",
name: "LEOcoin",
},
{
symbol: "LINDA",
name: "Linda",
},
{
symbol: "LINK",
name: "ChainLink",
},
{
symbol: "LOC",
name: "Loco",
},
{
symbol: "LOG",
name: "Wood Coin",
},
{
symbol: "LRC",
name: "Loopring",
},
{
symbol: "LSK",
name: "Lisk",
},
{
symbol: "LTC",
name: "Litecoin",
},
{
symbol: "LUN",
name: "Lunyr",
},
{
symbol: "LUX",
name: "LUXCoin",
},
{
symbol: "MAID",
name: "MaidSafe Coin",
},
{
symbol: "MANA",
name: "Decentraland",
},
{
symbol: "MCAP",
name: "MCAP",
},
{
symbol: "MCO",
name: "Monaco",
},
{
symbol: "MDA",
name: "Moeda",
},
{
symbol: "MDS",
name: "MediShares",
},
{
symbol: "MIOTA",
name: "IOTA",
},
{
symbol: "MKR",
name: "Maker",
},
{
symbol: "MLN",
name: "Melon",
},
{
symbol: "MNX",
name: "MinexCoin",
},
{
symbol: "MOD",
name: "Modum",
},
{
symbol: "MOIN",
name: "MoinCoin",
},
{
symbol: "MONA",
name: "MonaCoin",
},
{
symbol: "MTL",
name: "Metal",
},
{
symbol: "MTN*",
name: "Medicalchain",
},
{
symbol: "MTX",
name: "Matryx",
},
{
symbol: "NAS",
name: "Nebulas",
},
{
symbol: "NAV",
name: "NavCoin",
},
{
symbol: "NBT",
name: "NuBits",
},
{
symbol: "NDC",
name: "NeverDie",
},
{
symbol: "NEBL",
name: "Neblio",
},
{
symbol: "NEO",
name: "NEO",
},
{
symbol: "NEU",
name: "Neumark",
},
{
symbol: "NEWB",
name: "Newbium",
},
{
symbol: "NGC",
name: "NagaCoin",
},
{
symbol: "NKC",
name: "Nukecoinz",
},
{
symbol: "NLC2",
name: "NoLimitCoin",
},
{
symbol: "NMC",
name: "NameCoin",
},
{
symbol: "NMR",
name: "Numerai",
},
{
symbol: "NULS",
name: "Nuls",
},
{
symbol: "NVC",
name: "NovaCoin",
},
{
symbol: "NXT",
name: "Nxt",
},
{
symbol: "OAX",
name: "OpenANX",
},
{
symbol: "OBITS",
name: "Obits Coin",
},
{
symbol: "OC",
name: "OrangeCoin",
},
{
symbol: "OCN",
name: "Odyssey",
},
{
symbol: "ODN",
name: "Obsidian",
},
{
symbol: "OK",
name: "OKCash",
},
{
symbol: "OMG",
name: "OmiseGo",
},
{
symbol: "OMNI",
name: "Omni",
},
{
symbol: "ORE",
name: "Galactrum",
},
{
symbol: "ORME",
name: "Ormeus Coin",
},
{
symbol: "OST",
name: "Simple Token",
},
{
symbol: "OTN",
name: "Open Trading Network",
},
{
symbol: "OTX",
name: "Octanox",
},
{
symbol: "OXY",
name: "Oxycoin",
},
{
symbol: "PART",
name: "Particl",
},
{
symbol: "PAY",
name: "TenX",
},
{
symbol: "PBT",
name: "Primalbase",
},
{
symbol: "PCS",
name: "Pabyosi Coin",
},
{
symbol: "PIVX",
name: "Private Instant Verified Transaction",
},
{
symbol: "PIZZA",
name: "PizzaCoin",
},
{
symbol: "PLBT",
name: "Polybius",
},
{
symbol: "PLR",
name: "Pillar",
},
{
symbol: "POE",
name: "Po.et",
},
{
symbol: "POLY",
name: "PolyBit",
},
{
symbol: "POSW",
name: "PoSWallet",
},
{
symbol: "POWR",
name: "Power Ledger",
},
{
symbol: "PPC",
name: "PeerCoin",
},
{
symbol: "PPT",
name: "Populous",
},
{
symbol: "PPY",
name: "Peerplays",
},
{
symbol: "PRC",
name: "ProsperCoin",
},
{
symbol: "PRES",
name: "President Trump",
},
{
symbol: "PRG",
name: "Paragon",
},
{
symbol: "PRL",
name: "Oyster Pearl",
},
{
symbol: "PRO",
name: "Propy",
},
{
symbol: "PURA",
name: "Pura",
},
{
symbol: "PUT",
name: "PutinCoin",
},
{
symbol: "QASH",
name: "Quoine Liquid",
},
{
symbol: "QAU",
name: "Quantum",
},
{
symbol: "QSP",
name: "Quantstamp",
},
{
symbol: "QTUM",
name: "QTUM",
},
{
symbol: "QUN",
name: "QunQun",
},
{
symbol: "R",
name: "Revain",
},
{
symbol: "RBIES",
name: "Rubies",
},
{
symbol: "RCN",
name: "Ripio",
},
{
symbol: "RDD",
name: "ReddCoin",
},
{
symbol: "RDN",
name: "RadonPay",
},
{
symbol: "RDN*",
name: "Raiden Network",
},
{
symbol: "REBL",
name: "Rebellious",
},
{
symbol: "REE",
name: "ReeCoin",
},
{
symbol: "REP",
name: "Augur",
},
{
symbol: "REQ",
name: "Request Network",
},
{
symbol: "REV",
name: "Revenu",
},
{
symbol: "RGC",
name: "RG Coin",
},
{
symbol: "RHOC",
name: "RChain",
},
{
symbol: "RIYA",
name: "Etheriya",
},
{
symbol: "RKC",
name: "Royal Kingdom Coin",
},
{
symbol: "RLC",
name: "iEx.ec",
},
{
symbol: "RPX",
name: "Red Pulse",
},
{
symbol: "RUFF",
name: "Ruff",
},
{
symbol: "SALT",
name: "Salt Lending",
},
{
symbol: "SAN",
name: "Santiment",
},
{
symbol: "SBC",
name: "StableCoin",
},
{
symbol: "SC",
name: "Siacoin",
},
{
symbol: "SENT",
name: "Sentinel",
},
{
symbol: "SHIFT",
name: "Shift",
},
{
symbol: "SIB",
name: "SibCoin",
},
{
symbol: "SMART",
name: "SmartCash",
},
{
symbol: "SMLY",
name: "SmileyCoin",
},
{
symbol: "SMT*",
name: "SmartMesh",
},
{
symbol: "SNC",
name: "SunContract",
},
{
symbol: "SNGLS",
name: "SingularDTV",
},
{
symbol: "SNM",
name: "SONM",
},
{
symbol: "SNT",
name: "Status Network Token",
},
{
symbol: "SPK",
name: "Sparks",
},
{
symbol: "SRN",
name: "SirinLabs",
},
{
symbol: "STEEM",
name: "Steem",
},
{
symbol: "STK",
name: "STK Token",
},
{
symbol: "STORJ",
name: "Storj",
},
{
symbol: "STRAT",
name: "Stratis",
},
{
symbol: "STU",
name: "BitJob",
},
{
symbol: "STX",
name: "Stox",
},
{
symbol: "SUB",
name: "Substratum Network",
},
{
symbol: "SUR",
name: "Suretly",
},
{
symbol: "SWFTC",
name: "SwftCoin",
},
{
symbol: "SYS",
name: "SysCoin",
},
{
symbol: "TAAS",
name: "Token as a Service",
},
{
symbol: "TESLA",
name: "TeslaCoilCoin",
},
{
symbol: "THC",
name: "The Hempcoin",
},
{
symbol: "THETA",
name: "Theta",
},
{
symbol: "THS",
name: "TechShares",
},
{
symbol: "TIO",
name: "Trade.io",
},
{
symbol: "TKN",
name: "TokenCard ",
},
{
symbol: "TKY",
name: "THEKEY Token",
},
{
symbol: "TNB",
name: "Time New Bank",
},
{
symbol: "TNT",
name: "Tierion",
},
{
symbol: "TOA",
name: "TOA Coin",
},
{
symbol: "TRC",
name: "TerraCoin",
},
{
symbol: "TRIG",
name: "Trigger",
},
{
symbol: "TRST",
name: "TrustCoin",
},
{
symbol: "TRUMP",
name: "TrumpCoin",
},
{
symbol: "TRX",
name: "Tronix",
},
{
symbol: "UBQ",
name: "Ubiq",
},
{
symbol: "UNO",
name: "Unobtanium",
},
{
symbol: "UNRC",
name: "UniversalRoyalCoin",
},
{
symbol: "UQC",
name: "Uquid Coin",
},
{
symbol: "USDT",
name: "Tether",
},
{
symbol: "UTK",
name: "Utrust",
},
{
symbol: "UTT",
name: "United Traders Token",
},
{
symbol: "VEE",
name: "BLOCKv",
},
{
symbol: "VEN",
name: "Vechain",
},
{
symbol: "VERI",
name: "Veritaseum",
},
{
symbol: "VIA",
name: "ViaCoin",
},
{
symbol: "VIB",
name: "Viberate",
},
{
symbol: "VIBE",
name: "VIBEHub",
},
{
symbol: "VOISE",
name: "Voise",
},
{
symbol: "VOX",
name: "Voxels",
},
{
symbol: "VRS",
name: "Veros",
},
{
symbol: "VTC",
name: "VertCoin",
},
{
symbol: "VUC",
name: "Virta Unique Coin",
},
{
symbol: "WABI",
name: "WaBi",
},
{
symbol: "WAVES",
name: "Waves",
},
{
symbol: "WAX",
name: "Worldwide Asset eXchange",
},
{
symbol: "WC",
name: "WhiteCoin",
},
{
symbol: "WGR",
name: "Wagerr",
},
{
symbol: "WINGS",
name: "Wings DAO",
},
{
symbol: "WLK",
name: "Wolk",
},
{
symbol: "WOP",
name: "WorldPay",
},
{
symbol: "WPR",
name: "WePower",
},
{
symbol: "WRC",
name: "Worldcore",
},
{
symbol: "WTC",
name: "Waltonchain",
},
{
symbol: "XAUR",
name: "Xaurum",
},
{
symbol: "XBP",
name: "Black Pearl Coin",
},
{
symbol: "XBY",
name: "XtraBYtes",
},
{
symbol: "XCP",
name: "CounterParty",
},
{
symbol: "XCXT",
name: "CoinonatX",
},
{
symbol: "XDN",
name: "DigitalNote ",
},
{
symbol: "XEM",
name: "NEM",
},
{
symbol: "XGB",
name: "GoldenBird",
},
{
symbol: "XHI",
name: "HiCoin",
},
{
symbol: "XID",
name: "Sphre AIR",
},
{
symbol: "XLM",
name: "Stellar",
},
{
symbol: "XMR",
name: "Monero",
},
{
symbol: "XNC",
name: "XenCoin",
},
{
symbol: "XRB",
name: "Nano",
},
{
symbol: "XRP",
name: "Ripple",
},
{
symbol: "XTO",
name: "Tao",
},
{
symbol: "XTZ",
name: "Tezos",
},
{
symbol: "XUC",
name: "Exchange Union",
},
{
symbol: "XVG",
name: "Verge",
},
{
symbol: "XZC",
name: "ZCoin",
},
{
symbol: "YEE",
name: "Yee",
},
{
symbol: "YOC",
name: "YoCoin",
},
{
symbol: "YOYOW",
name: "Yoyow",
},
{
symbol: "ZBC",
name: "Zilbercoin",
},
{
symbol: "ZCL",
name: "ZClassic",
},
{
symbol: "ZEC",
name: "ZCash",
},
{
symbol: "ZEN",
name: "ZenCash",
},
{
symbol: "ZIL",
name: "Zilliqa",
},
{
symbol: "ZNY",
name: "BitZeny",
},
{
symbol: "ZRX",
name: "0x",
},
{
symbol: "ZSC",
name: "Zeusshield",
},
];
}
/**
* Convert name to coin or return coin if valid
* @param {String} str
*/
getCoin(str) {
const findCoin = this.coins.find((c) => {
return c.symbol === str.toUpperCase();
});
if (findCoin) {
return findCoin.symbol;
}
const findName = this.coins.find((coin) => {
return coin.name.toUpperCase() === str.toUpperCase();
});
if (findName) {
return findName.symbol;
}
return str;
}
/**
* Convert coin (BTC) to name (Bitcoin)
* @param {String} coin
*/
coinToName(coin) {
const res = this.coins.find((c) => {
return c.symbol === coin.toUpperCase();
});
return res ? res.name : coin;
}
/**
* Convert name (Bitcoin) to coin (BTC)
* @param {String} name
*/
nameToCoin(name) {
const res = this.coins.find((coin) => {
return coin.name.toUpperCase() === name.toUpperCase();
});
return res ? res.symbol : name;
}
/**
* HTTP Get Request
* @param {String} url
* @returns Promise
*/
__get(url) {
return new Promise((resolve, reject) => {
fetch(url)
.then((response) => response.json())
.then((data) => resolve(data))
.catch((error) => reject(error));
});
}
/**
* Get exchange rate for coin
* @param {String} name
* @returns Promise
*/
live(coin) {
return new Promise((resolve, reject) => {
// URL
const url = new URL("https://api.coinlayer.com/live");
url.searchParams.append("access_key", this.__apiKey);
url.searchParams.append("target", "eur");
url.searchParams.append("symbols", this.getCoin(coin));
// GET
this.__get(url.href)
.then((res) => {
if (res.success) {
resolve(res.rates);
} else {
reject(res);
}
})
.catch((error) => {
reject(error);
});
});
}
/**
* Convert amount between any one cryptocurrency and standard (fiat) currency
* @param {String} from
* @param {String} to
* @param {Number} amount
* @returns Promise
*/
convert(from, to, amount) {
return new Promise((resolve, reject) => {
// URL
const url = new URL("https://api.coinlayer.com/convert");
url.searchParams.append("access_key", this.__apiKey);
url.searchParams.append("from", this.getCoin(from));
url.searchParams.append("to", this.getCoin(to));
url.searchParams.append("amount", amount);
// GET
this.__get(url.href)
.then((res) => {
if (res.success) {
resolve(res);
} else {
reject(res);
}
})
.catch((error) => {
reject(error);
});
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment