37 lines
877 B
JavaScript
37 lines
877 B
JavaScript
const express = require('express')
|
|
const router = express.Router()
|
|
|
|
const state = require('../middlewares/state')
|
|
const logs = require('../logs')
|
|
|
|
const THROTTLE_LOGS_QUERY = 30 * 1000
|
|
|
|
function getLastSeen(req, res, next) {
|
|
const deviceId = req.deviceId
|
|
const timestamp = Date.now()
|
|
const shouldTrigger =
|
|
!state.canGetLastSeenMap[deviceId] ||
|
|
timestamp - state.canGetLastSeenMap[deviceId] >= THROTTLE_LOGS_QUERY
|
|
|
|
if (shouldTrigger) {
|
|
state.canGetLastSeenMap[deviceId] = timestamp
|
|
return logs
|
|
.getLastSeen(deviceId)
|
|
.then(r => res.json(r))
|
|
.catch(next)
|
|
}
|
|
|
|
return res.status(408).json({})
|
|
}
|
|
|
|
function updateLogs(req, res, next) {
|
|
return logs
|
|
.update(req.deviceId, req.body.logs)
|
|
.then(success => res.json({ success }))
|
|
.catch(next)
|
|
}
|
|
|
|
router.get('/', getLastSeen)
|
|
router.post('/', updateLogs)
|
|
|
|
module.exports = router
|