From 1a4fc9535a89b58e8b67c8996ade0b833116af3a Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 17 Aug 2025 23:50:24 -0700 Subject: Move to pengueno. --- lib/server.ts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 lib/server.ts (limited to 'lib/server.ts') diff --git a/lib/server.ts b/lib/server.ts new file mode 100644 index 0000000..9885bf3 --- /dev/null +++ b/lib/server.ts @@ -0,0 +1,35 @@ +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); + } +} -- cgit v1.2.3-70-g09d2