const fs = require('fs') const path = require('path') const router = require('express').Router() const timer = (time = 300) => (req, res, next) => setTimeout(next, time) const dataDir = path.join(__dirname, 'data') const readJson = (fileName) => { const filePath = path.join(dataDir, fileName) const content = fs.readFileSync(filePath, 'utf-8') return JSON.parse(content) } const sendNotFound = (res, message) => { res.status(404).json({ error: { message }, data: null }) } router.use(timer()) router.use((req, res, next) => { res.type('application/json') next() }) // Challenge API endpoints router.post('/challenge/auth', (req, res) => { res.json(readJson('auth.json')) }) router.get('/challenge/chains', (req, res) => { res.json(readJson('chains.json')) }) router.get('/challenge/chain/:id', (req, res) => { const chains = readJson('chains.json') const chain = chains.find((item) => item.id === req.params.id || item._id === req.params.id) if (!chain) { return sendNotFound(res, `Цепочка ${req.params.id} не найдена`) } return res.json(chain) }) router.get('/challenge/task/:id', (req, res) => { const chains = readJson('chains.json') const task = chains .flatMap((chain) => chain.tasks || []) .find((item) => item.id === req.params.id || item._id === req.params.id) if (!task) { return sendNotFound(res, `Задание ${req.params.id} не найдено`) } return res.json(task) }) router.post('/challenge/submit', (req, res) => { const response = readJson('submit.json') res.json(response) }) router.get('/challenge/check-status/:queueId', (req, res) => { const statuses = readJson('queue-status.json') const status = statuses[req.params.queueId] if (!status) { return sendNotFound(res, `Статус очереди ${req.params.queueId} не найден`) } return res.json(status) }) router.get('/challenge/user/:userId/stats', (req, res) => { const statsMap = readJson('user-stats.json') const stats = statsMap[req.params.userId] if (!stats) { return sendNotFound(res, `Статистика пользователя ${req.params.userId} не найдена`) } return res.json(stats) }) router.get('/challenge/user/:userId/submissions', (req, res) => { const submissionsMap = readJson('user-submissions.json') const submissions = submissionsMap[req.params.userId] || [] return res.json(submissions) }) router.get('/challenge/stats', (req, res) => { res.json(readJson('system-stats.json')) }) router.get('/challenge/submissions', (req, res) => { res.json(readJson('submissions.json')) }) module.exports = router