import { FourOhFourActivityImpl, HealthCheckActivityImpl, type HealthChecker, type IFourOhFourActivity, type IHealthCheckActivity, type ITraceable, PenguenoRequest, Server, type ServerTrace, } from '@emprespresso/pengueno'; import { healthCheck as _healthCheck, EmailActivityImpl, IEmailActivity, Inbox, Outbox } from './index'; export class UptimeServer implements Server { constructor( healthCheck: HealthChecker = _healthCheck, private readonly healthCheckActivity: IHealthCheckActivity = new HealthCheckActivityImpl(healthCheck), private readonly emailActivity: IEmailActivity = new EmailActivityImpl( (a) => Outbox.from(a), (b) => Inbox.from(b), ), private readonly fourOhFourActivity: IFourOhFourActivity = new FourOhFourActivityImpl(), ) {} public serve(req: ITraceable) { const url = new URL(req.get().req.url); if (url.pathname === '/health') { return this.healthCheckActivity.checkHealth(req); } if (url.pathname === '/email') { return this.emailActivity.runMail(req); } return this.fourOhFourActivity.fourOhFour(req); } }