Some checks failed
Gitea Auto Deploy / Deploy-Container (push) Failing after 27s
61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
import express from "express";
|
|
import { generateRpcCache, type RpcCache } from "./rpcChecker";
|
|
import fs from "fs";
|
|
import path from "path";
|
|
import corsLib from "cors";
|
|
|
|
const app = express();
|
|
const PORT = 3344;
|
|
|
|
app.use(express.json());
|
|
app.use(corsLib());
|
|
|
|
let rpcCache: RpcCache = {};
|
|
|
|
const CACHE_FILE = path.join(__dirname, "cache.json");
|
|
|
|
function loadCacheFromFile() {
|
|
if (fs.existsSync(CACHE_FILE)) {
|
|
const raw = fs.readFileSync(CACHE_FILE, "utf-8");
|
|
rpcCache = JSON.parse(raw);
|
|
}
|
|
}
|
|
|
|
async function refreshRpcCache() {
|
|
console.log("🔄 Refreshing RPC data...");
|
|
await generateRpcCache((chain, data) => {
|
|
rpcCache[chain] = data;
|
|
});
|
|
|
|
console.log("✅ RPC data refreshed.");
|
|
}
|
|
|
|
setInterval(refreshRpcCache, 12 * 60 * 60 * 1000);
|
|
|
|
app.post("/rpc-check", (req, res) => {
|
|
if (!req.body || typeof req.body !== "object") {
|
|
return res.status(400).json({ error: "Invalid JSON body" });
|
|
}
|
|
|
|
const { chains } = req.body;
|
|
if (!Array.isArray(chains)) {
|
|
return res.status(400).json({ error: "Missing chains: string[]" });
|
|
}
|
|
|
|
const data: RpcCache = {};
|
|
for (const name of chains) {
|
|
if (rpcCache[name]) {
|
|
data[name] = rpcCache[name];
|
|
}
|
|
}
|
|
|
|
return res.json(data);
|
|
});
|
|
|
|
app.listen(PORT, async () => {
|
|
console.log(`🚀 RPC check server running on http://localhost:${PORT}`);
|
|
loadCacheFromFile();
|
|
await refreshRpcCache();
|
|
});
|
|
|