mirror of
https://github.com/0x1d/drift-keeper.git
synced 2025-12-15 02:42:21 +01:00
40 lines
1.5 KiB
JavaScript
40 lines
1.5 KiB
JavaScript
const express = require('express');
|
|
const { createMetrics } = require('./metrics');
|
|
const { loadWalletBalance, loadUSDCBalance, loadSolanaMarketData, extractWalletBalance, extractUSDCBalance, extractSOLPrice } = require('./solana');
|
|
|
|
const WALLET_ADDRESS = process.env.WALLET_ADDRESS;
|
|
const [registry, usdcBalanceMetric, solBalanceMetric, solUsdcBalanceMetric, solPriceMetric] = createMetrics();
|
|
const app = express();
|
|
|
|
const trimWalletAddress = (walletAddress) => {
|
|
return `${walletAddress.slice(0,4)}...${walletAddress.slice(walletAddress.length-4, walletAddress.length)}`;
|
|
}
|
|
|
|
app.get('/metrics/:addr?', async (req, res) => {
|
|
const walletAddress = req.params.addr || WALLET_ADDRESS;
|
|
console.log(`Gathering metrics for ${walletAddress}`);
|
|
res.setHeader('Content-Type', registry.contentType);
|
|
|
|
//registry.resetMetrics();
|
|
|
|
let [solBalance, usdcBalance, marketData] = await Promise.all([
|
|
loadWalletBalance(walletAddress),
|
|
loadUSDCBalance(walletAddress),
|
|
loadSolanaMarketData()]);
|
|
|
|
let label = { wallet: walletAddress, walletShort: trimWalletAddress(walletAddress) };
|
|
|
|
solBalanceMetric.set(label, extractWalletBalance(solBalance));
|
|
usdcBalanceMetric.set(label, extractUSDCBalance(usdcBalance));
|
|
let solPrice = extractSOLPrice(marketData);
|
|
if(solPrice){
|
|
solUsdcBalanceMetric.set(label, extractWalletBalance(solBalance) * solPrice);
|
|
solPriceMetric.set(solPrice);
|
|
}
|
|
|
|
res.send(await registry.metrics());
|
|
});
|
|
|
|
app.listen(3000, () => {
|
|
console.log("Server is running on port 3000");
|
|
}); |