From 5cad0bfc4147668fbc8c6491ccd416e49200849c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Feb 2024 19:45:21 +0100 Subject: [PATCH] refactor levana code --- dexs/levana/fetch.ts | 18 +++++++++--------- dexs/levana/index.ts | 20 ++++---------------- helpers/env.ts | 1 + 3 files changed, 14 insertions(+), 25 deletions(-) diff --git a/dexs/levana/fetch.ts b/dexs/levana/fetch.ts index 62a537baf8..6fe7500d1c 100644 --- a/dexs/levana/fetch.ts +++ b/dexs/levana/fetch.ts @@ -1,7 +1,5 @@ -import BigNumber from "bignumber.js"; -import fetchURL from "../../utils/fetchURL"; -const plimit = require('p-limit'); -const limit = plimit(1); +import { getEnv } from "../../helpers/env"; +import { httpGet } from "../../utils/fetchURL"; const INDEXER_URL = "https://indexer-mainnet.levana.finance"; const QUERIER_URL = "https://querier-mainnet.levana.finance"; @@ -32,11 +30,13 @@ export async function fetchVolume(kind: "daily" | "total", marketInfos: MarketIn const url = (marketsStr: string) => `${INDEXER_URL}/rolling_trade_volume?market=${marketsStr}×tamp=${timestamp}&interval_days=${intervalDays}`; - const result = (await Promise.all(marketInfos.map(marketInfo => limit(() => fetchURL(url(marketInfo.addr)))))) - .map((response: any) => response) - .map((data: any) => BigNumber(data)); + const result = (await Promise.all(marketInfos.map(marketInfo => httpGet(url(marketInfo.addr), { + headers: { + 'x-levana-access': getEnv('LEVANA_API_KEY') + } + })))) - return result.reduce((a: BigNumber, b: BigNumber) => a.plus(b), BigNumber(0)) + return result.reduce((a: number, b: number) => a + +b, 0) } export async function fetchMarketInfos(chain: Chain): Promise { @@ -47,7 +47,7 @@ export async function fetchMarketInfos(chain: Chain): Promise { } } const url = `${QUERIER_URL}/v1/perps/factory-market-status?network=${networkName[chain]}&factory=${factoryAddr[chain]}` - const result:FactoryResponse = await fetchURL(url); + const result:FactoryResponse = await httpGet(url); return Object.entries(result).reduce((acc, [addr, {market_id}]) => { acc.push({ diff --git a/dexs/levana/index.ts b/dexs/levana/index.ts index 80f90bc926..4ed1c5bed5 100644 --- a/dexs/levana/index.ts +++ b/dexs/levana/index.ts @@ -1,4 +1,4 @@ -import {FetchResultVolume, SimpleAdapter} from "../../adapters/types"; +import { FetchResultVolume, SimpleAdapter } from "../../adapters/types"; import { fetchMarketInfos, fetchVolume } from "./fetch"; const adapter: SimpleAdapter = { @@ -11,11 +11,7 @@ const adapter: SimpleAdapter = { fetchVolume("daily", marketInfos, timestamp), fetchVolume("total", marketInfos, timestamp) ]); - return { - timestamp, - dailyVolume: dailyVolume.toString(), - totalVolume: totalVolume.toString() - } + return { timestamp, dailyVolume, totalVolume, } }, start: 1688628356 }, @@ -28,11 +24,7 @@ const adapter: SimpleAdapter = { fetchVolume("total", marketInfos, timestamp) ]); - return { - timestamp, - dailyVolume: dailyVolume.toString(), - totalVolume: totalVolume.toString() - } + return { timestamp, dailyVolume, totalVolume, } }, start: 1691305909 }, @@ -45,11 +37,7 @@ const adapter: SimpleAdapter = { fetchVolume("total", marketInfos, timestamp) ]); - return { - timestamp, - dailyVolume: dailyVolume.toString(), - totalVolume: totalVolume.toString() - } + return { timestamp, dailyVolume, totalVolume, } }, start: 1695738685 } diff --git a/helpers/env.ts b/helpers/env.ts index d62550126f..aef9bbdef0 100644 --- a/helpers/env.ts +++ b/helpers/env.ts @@ -19,6 +19,7 @@ export const ENV_KEYS = new Set([ 'SMARDEX_SUBGRAPH_API_KEY', 'PROD_VYBE_API_KEY', 'PERENNIAL_V2_SUBGRAPH_API_KEY', + 'LEVANA_API_KEY', 'ZEROx_API_KEY', 'ZEROX_API_KEY' ])