import { inject, injectable } from "@codemation/core"; import type { Hono } from "hono"; import { InternalHmacAuthMiddleware } from "./InternalHmacAuthMiddleware"; import type { InternalHonoApiRouteRegistrar } from "../presentation/http/hono/InternalHonoApiRouteRegistrar"; import type { PairingConfig } from "./pairing.types"; import { PairingConfigToken } from "./PairingConfigToken"; import { ServedCommitShaReader } from "./ServedCommitShaReader"; @injectable() export class InternalDeploymentRegistrar implements InternalHonoApiRouteRegistrar { constructor( @inject(InternalHmacAuthMiddleware) private readonly hmacMiddleware: InternalHmacAuthMiddleware, @inject(PairingConfigToken) private readonly pairingConfig: PairingConfig, @inject(ServedCommitShaReader) private readonly reader: ServedCommitShaReader, ) {} register(app: Hono): void { const { workspaceId } = this.pairingConfig; app.get("/internal/deployment", this.hmacMiddleware.handle(), async (c) => { return c.json({ servedCommitSha: await this.reader.read(), workspaceId }); }); } }