kba / routes /strike.js
ShieldX's picture
Upload 24 files
e14bacb verified
const express = require("express");
const router = require("express").Router();
const crypto = require("crypto");
const StrikeHistory = require("../models/StrikeHistory");
const sha256 = (payload) =>
crypto.createHash("sha256").update(JSON.stringify(payload)).digest("hex");
router.get("/verify/:strikeId", async (req, res) => {
try {
const strike = await StrikeHistory.findById(req.params.strikeId);
if (!strike) return res.status(404).json({ valid: false });
const recomputed = sha256(strike.audit_payload);
res.json({
valid: recomputed === strike.audit_hash,
audit_hash: strike.audit_hash,
recomputed_hash: recomputed,
strike,
});
} catch (err) {
res.status(500).json({ valid: false });
}
});
// GET /api/strike/status
router.get("/status", async (req, res) => {
try {
const start = new Date();
start.setHours(0, 0, 0, 0);
const end = new Date();
end.setHours(23, 59, 59, 999);
// Fetch today's strike
const strike = await StrikeHistory.findOne({
date: { $gte: start, $lte: end },
}).populate("winners.user_id", "name email");
// 1️⃣ STRIKE RUNNING (manual or cron)
if (global.isStrikeRunning) {
return res.json({
status: "RUNNING",
live: global.liveStrikeData || null,
});
}
// 2️⃣ NO STRIKE YET
if (!strike) {
return res.json({
status: "IDLE",
});
}
// 3️⃣ STRIKE COMPLETED
strike_completed_json = {
status: "COMPLETED",
date: strike.date,
result: {
target_price: strike.target_price,
winning_digits: strike.winning_digits,
total_pool: strike.total_pool,
audit_hash: strike.audit_hash,
audit_payload: strike.audit_payload,
winners: strike.winners
.sort((a, b) => a.rank - b.rank)
.slice(0, 3)
.map((w) => ({
name: w.user_id?.name || "Anonymous",
tier: w.tier,
amount: w.amount,
rank: w.rank,
kus_id: w.kus_id,
})),
},
};
return res.json(strike_completed_json);
console.log("Strike Result:", strike_completed_json);
} catch (err) {
console.error("Strike Status Error:", err);
res.status(500).json({
status: "ERROR",
message: "Failed to fetch strike status",
});
}
});
module.exports = router;