From c37e74b3b4df76a4d2d256d5ab96484c8efd1df6 Mon Sep 17 00:00:00 2001 From: ScorpioTM Date: Wed, 10 Jun 2020 08:22:54 +0200 Subject: [PATCH] Added Flama Token (#2308) * Added Flama Token Flama is one of the first deflationary tokens in the market with enhanced futures like staking * Update info.json Added final newline * Add test Co-authored-by: Mykola --- .../info.json | 14 ++++++++++++++ .../logo.png | Bin 0 -> 27882 bytes src/test/helpers.ts | 10 ++++++++++ src/test/index.test.ts | 10 ++++++++++ 4 files changed, 34 insertions(+) create mode 100644 blockchains/ethereum/assets/0x2afd9cE07D4186e8F3671D52200850760a8E1F70/info.json create mode 100644 blockchains/ethereum/assets/0x2afd9cE07D4186e8F3671D52200850760a8E1F70/logo.png diff --git a/blockchains/ethereum/assets/0x2afd9cE07D4186e8F3671D52200850760a8E1F70/info.json b/blockchains/ethereum/assets/0x2afd9cE07D4186e8F3671D52200850760a8E1F70/info.json new file mode 100644 index 000000000..6cc64e532 --- /dev/null +++ b/blockchains/ethereum/assets/0x2afd9cE07D4186e8F3671D52200850760a8E1F70/info.json @@ -0,0 +1,14 @@ +{ + "name": "Flama", + "website": "https://flamanet.io/", + "short_description": "Flama is one of the first deflationary tokens in the market with enhanced futures like staking.", + "description": "Flama is one of the first deflationary tokens in the market with enhanced futures like staking.", + "socials": [ + { + "name": "Twitter", + "url": "https://twitter.com/FlamaToken", + "handle": "Flama" + } + ], + "explorer": "https://etherscan.io/token/0x2afd9ce07d4186e8f3671d52200850760a8e1f70" +} diff --git a/blockchains/ethereum/assets/0x2afd9cE07D4186e8F3671D52200850760a8E1F70/logo.png b/blockchains/ethereum/assets/0x2afd9cE07D4186e8F3671D52200850760a8E1F70/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..91dd2ee832fb974153275fab2cfe1219d0c8473e GIT binary patch literal 27882 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 `${chainsFolderPath}/ export const getChainInfoPath = (chain: string): string => `${chainsFolderPath}/${chain}/info/${info}` export const getChainAssetInfoPath = (chain: string, address: string): string => `${chainsFolderPath}/${chain}/assets/${address}/${info}` export const getChainAssetsPath = (chain: string): string => `${chainsFolderPath}/${chain}/assets` +export const getChainPath = (chain: string): string => `${chainsFolderPath}/${chain}` export const minLogoWidth = 64 export const minLogoHeight = 64 @@ -64,6 +65,7 @@ export const getChainAssetPath = (chain: string, address: string) => `${getChain export const getAllChainsList = (): string[] => readDirSync(chainsFolderPath) export const getChainAssetLogoPath = (chain: string, address: string) => `${getChainAssetsPath(chain)}/${address}/${logo}` export const getChainAssetFilesList = (chain: string, address: string) => readDirSync(getChainAssetPath(chain, address)) +export const getChainFolderFilesList = (chain: string) => readDirSync(getChainPath(chain)) export const getChainAssetsList = (chain: string): string[] => readDirSync(getChainAssetsPath(chain)) export const getChainValidatorsPath = (chain: string): string => `${chainsFolderPath}/${chain}/validators` export const getChainValidatorsAssets = (chain: string): string[] => readDirSync(getChainValidatorsAssetsPath(chain)) @@ -316,3 +318,11 @@ export const assetFolderAllowedFiles = [ logo, info ] + +export const chainFolderAllowedFiles = [ + "assets", + "whitelist.json", + "blacklist.json", + "validators", + infoName +] diff --git a/src/test/index.test.ts b/src/test/index.test.ts index 23bb65dfd..7e9ac9240 100644 --- a/src/test/index.test.ts +++ b/src/test/index.test.ts @@ -3,6 +3,7 @@ const eztz = require('eztz-lib') import { Binance, Cosmos, Tezos, Tron, IoTeX, Waves, Kava, Terra, assetFolderAllowedFiles, + chainFolderAllowedFiles, chainsFolderPath, ethSidechains, findFiles, @@ -10,6 +11,7 @@ import { getChainAssetLogoPath, getChainAssetPath, getChainAssetsPath, + getChainFolderFilesList, getChainBlacklistPath, getChainLogoPath, getChainValidatorAssetLogoPath, @@ -82,6 +84,14 @@ describe(`Test "blockchains" folder`, () => { }) }) + describe(`Chain folder should contain only predefined list of files`, () => { + readDirSync(chainsFolderPath).forEach(chain => { + getChainFolderFilesList(chain).forEach(file => { + expect(chainFolderAllowedFiles.indexOf(file),`File "${typeof file}" ${file} not allowed in chain folder: ${chain}`).not.toBe(-1) + }) + }) + }) + describe("Check Ethereum side-chain folders", () => { ethSidechains.forEach(chain => { test(`Test chain ${chain} folder`, () => {