42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
/**
|
|
* Monitor API Route
|
|
* GET /api/monitor - Get all monitoring data
|
|
* POST /api/monitor/check-sites - Trigger site availability check
|
|
* @author Descomplicar® | @link descomplicar.pt | @copyright 2026
|
|
*/
|
|
import { Router } from 'express'
|
|
import type { Request, Response } from 'express'
|
|
import * as monitoringService from '../services/monitoring.js'
|
|
|
|
const router = Router()
|
|
|
|
// Get monitoring data
|
|
router.get('/', async (_req: Request, res: Response) => {
|
|
try {
|
|
const data = await monitoringService.getMonitoringData()
|
|
res.json(data)
|
|
} catch (error) {
|
|
console.error('Monitor API error:', error)
|
|
res.status(500).json({ error: 'Internal server error' })
|
|
}
|
|
})
|
|
|
|
// Trigger site availability check
|
|
router.post('/check-sites', async (_req: Request, res: Response) => {
|
|
try {
|
|
console.log('[Monitor] Manual site check triggered')
|
|
const result = await monitoringService.checkAllSitesAvailability()
|
|
res.json({
|
|
success: true,
|
|
message: 'Site check completed',
|
|
...result,
|
|
timestamp: new Date().toISOString()
|
|
})
|
|
} catch (error) {
|
|
console.error('Site check error:', error)
|
|
res.status(500).json({ error: 'Internal server error', message: (error as Error).message })
|
|
}
|
|
})
|
|
|
|
export default router
|