autobaan/src/server/http/routes/cron.ts

62 lines
1.6 KiB
TypeScript
Raw Normal View History

import { IncomingMessage, ServerResponse } from 'http'
import { asyncLocalStorage as l } from '../../../common/logger'
import { Router } from './index'
2023-02-08 13:33:42 +01:00
import { getStatus, startTasks, stopTasks } from '../../cron'
export class CronRouter extends Router {
public async handleRequest(
req: IncomingMessage,
2023-02-10 12:22:36 +01:00
res: ServerResponse<IncomingMessage>
) {
const { url = '', method } = req
const [route] = url.split('?')
switch (true) {
case /^\/cron\/?$/.test(route) && method === 'GET': {
2023-02-08 13:33:42 +01:00
await this.GET_cron(req, res)
break
}
case /^\/cron\/enable$/.test(route) && method === 'POST': {
await this.POST_cron_enable(req, res)
break
}
case /^\/cron\/disable$/.test(route) && method === 'POST': {
await this.POST_cron_disable(req, res)
break
}
default: {
this.handle404(req, res)
}
}
}
2023-02-08 13:33:42 +01:00
private async GET_cron(
_req: IncomingMessage,
2023-02-10 12:22:36 +01:00
res: ServerResponse<IncomingMessage>
2023-02-08 13:33:42 +01:00
) {
l.getStore()?.debug('Checking cron status')
const status = getStatus()
res.writeHead(200, undefined, {
'content-type': 'text/plain',
})
res.write(status ? 'Enabled' : 'Disabled')
}
private async POST_cron_enable(
_req: IncomingMessage,
2023-02-10 12:22:36 +01:00
res: ServerResponse<IncomingMessage>
) {
l.getStore()?.debug('Enabling cron')
startTasks()
res.writeHead(200)
}
private async POST_cron_disable(
_req: IncomingMessage,
2023-02-10 12:22:36 +01:00
res: ServerResponse<IncomingMessage>
) {
l.getStore()?.debug('Disabling cron')
stopTasks()
res.writeHead(200)
}
}