You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

105 lines
3.2 KiB

/**
* /home/def/monitor/backend/klingex-smoketest.js
*
* Run:
* node klingex-smoketest.js
*
* What it does:
* - constructs KlingEx client
* - calls:
* client.markets.list()
* client.markets.tickers()
* client.markets.ticker('ETHO_USDT')
* client.markets.ticker('EGAZ_USDT')
* - finds the marketId/tradingPairId for ETHO/USDT and EGAZ/USDT
* - tries client.markets.ohlcv(marketId,'1d',{limit:7})
*/
const { KlingEx } = require("klingex");
function normKey(base, quote) {
return `${String(base).toUpperCase()}_${String(quote).toUpperCase()}`;
}
function normKeyDash(base, quote) {
return `${String(base).toUpperCase()}-${String(quote).toUpperCase()}`;
}
function preview(x) {
if (Array.isArray(x)) return { type: "array", len: x.length, first: x[0] };
if (x && typeof x === "object") return { type: "object", keys: Object.keys(x).slice(0, 35) };
return { type: typeof x, value: x };
}
async function tryCall(label, fn) {
try {
const r = await fn();
console.log(`OK: ${label}`, preview(r));
return r;
} catch (e) {
console.log(`FAIL: ${label}`);
console.log(" ", e?.message || e);
return null;
}
}
function findMarketId(marketsList, targetUnderscore) {
if (!Array.isArray(marketsList)) return null;
for (const m of marketsList) {
const base = m.base_asset_symbol ?? m.baseAssetSymbol ?? m.base ?? m.base_asset;
const quote = m.quote_asset_symbol ?? m.quoteAssetSymbol ?? m.quote ?? m.quote_asset;
if (!base || !quote) continue;
const k1 = normKey(base, quote);
const k2 = normKeyDash(base, quote);
if (k1 === targetUnderscore || k2 === targetUnderscore.replace("_", "-")) {
const id =
m.tradingPairId ??
m.trading_pair_id ??
m.marketId ??
m.market_id ??
m.id ??
m.pair_id;
if (id != null) return Number(id);
}
}
return null;
}
async function main() {
// README says apiKey optional for public endpoints; constructor can be empty.
const client = new KlingEx();
console.log("client keys:", Object.keys(client));
console.log("markets keys:", client.markets ? Object.keys(client.markets) : "(no client.markets)");
const markets = await tryCall("client.markets.list()", () => client.markets.list());
await tryCall("client.markets.tickers()", () => client.markets.tickers());
const etho = await tryCall("client.markets.ticker('ETHO_USDT')", () => client.markets.ticker("ETHO_USDT"));
const egaz = await tryCall("client.markets.ticker('EGAZ_USDT')", () => client.markets.ticker("EGAZ_USDT"));
const ethoId = findMarketId(markets, "ETHO_USDT");
const egazId = findMarketId(markets, "EGAZ_USDT");
console.log("ETHO_USDT marketId/tradingPairId:", ethoId);
console.log("EGAZ_USDT marketId/tradingPairId:", egazId);
if (ethoId) {
await tryCall(`client.markets.ohlcv(${ethoId}, '1d', {limit:7})`, () =>
client.markets.ohlcv(ethoId, "1d", { limit: 7 })
);
}
if (egazId) {
await tryCall(`client.markets.ohlcv(${egazId}, '1d', {limit:7})`, () =>
client.markets.ohlcv(egazId, "1d", { limit: 7 })
);
}
console.log("Done.");
}
main().catch((e) => {
console.error("Unhandled:", e);
process.exit(99);
});