Some checks failed
platform/bro-js/challenge-pl/pipeline/head There was a failure building this commit
97 lines
2.5 KiB
JavaScript
97 lines
2.5 KiB
JavaScript
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()
|
|
})
|
|
|
|
router.post('/auth', (req, res) => {
|
|
res.json(readJson('auth.json'))
|
|
})
|
|
|
|
router.get('/chains', (req, res) => {
|
|
res.json(readJson('chains.json'))
|
|
})
|
|
|
|
router.get('/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('/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('/submit', (req, res) => {
|
|
const response = readJson('submit.json')
|
|
res.json(response)
|
|
})
|
|
|
|
router.get('/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('/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('/user/:userId/submissions', (req, res) => {
|
|
const submissionsMap = readJson('user-submissions.json')
|
|
const submissions = submissionsMap[req.params.userId] || []
|
|
return res.json(submissions)
|
|
})
|
|
|
|
router.get('/stats', (req, res) => {
|
|
res.json(readJson('system-stats.json'))
|
|
})
|
|
|
|
router.get('/submissions', (req, res) => {
|
|
res.json(readJson('submissions.json'))
|
|
})
|
|
|
|
module.exports = router
|