summaryrefslogtreecommitdiff
path: root/hooks/server
diff options
context:
space:
mode:
Diffstat (limited to 'hooks/server')
-rw-r--r--hooks/server/health.ts23
-rw-r--r--hooks/server/mod.ts71
2 files changed, 49 insertions, 45 deletions
diff --git a/hooks/server/health.ts b/hooks/server/health.ts
new file mode 100644
index 0000000..41dfcb4
--- /dev/null
+++ b/hooks/server/health.ts
@@ -0,0 +1,23 @@
+import {
+ getRequiredEnv,
+ getStdout,
+ type HealthCheckInput,
+ HealthCheckOutput,
+ type IEither,
+ type ITraceable,
+ TraceUtil,
+} from "@emprespresso/pengueno";
+
+export const healthCheck = <Trace>(
+ input: ITraceable<HealthCheckInput, Trace>,
+): Promise<IEither<Error, HealthCheckOutput>> =>
+ input.bimap(TraceUtil.withFunctionTrace(healthCheck))
+ .move(getRequiredEnv("LAMINAR_HOST"))
+ // we need to test LAMINAR_HOST is propagated to getStdout for other procedures
+ .map(({ item }) => item.moveRight(["laminarc", "show-jobs"]))
+ .map((i) =>
+ i.item.mapRight(i.move.apply)
+ .flatMapAsync(getStdout.apply)
+ .then((gotJobs) => gotJobs.moveRight(HealthCheckOutput.YAASQUEEN))
+ )
+ .item;
diff --git a/hooks/server/mod.ts b/hooks/server/mod.ts
index cc20827..b635b05 100644
--- a/hooks/server/mod.ts
+++ b/hooks/server/mod.ts
@@ -5,52 +5,33 @@ import {
HealthCheckOutput,
type IEither,
type ITraceable,
+ LogTraceable,
TraceUtil,
} from "@emprespresso/pengueno";
-import {} from "../../u/trace/mod.ts";
-const healthCheck = <Trace>(
- input: ITraceable<HealthCheckInput, Trace>,
-): Promise<IEither<Error, HealthCheckOutput>> =>
- input.bimap(TraceUtil.withFunctionTrace(healthCheck))
- .move(getRequiredEnv("LAMINAR_HOST"))
- // we need to test LAMINAR_HOST is propagated to getStdout for other procedures
- .map(({ item }) => item.moveRight(["laminarc", "show-jobs"]))
- .map((i) =>
- i.item.mapRight(i.move.apply)
- .flatMapAsync(getStdout.apply)
- .then((gotJobs) => gotJobs.moveRight(HealthCheckOutput.YAASQUEEN))
- )
- .item;
+export class LizCIServer {
+ private constructor(
+ private readonly healthCheckActivity = HealthCheckActivity(healthCheck),
+ private readonly jobHookActivity = JobHookActivity(jobQueuer),
+ private readonly fourOhFourActivity = FourOhFourActivity(),
+ ) {}
-//export class LizCIServer {
-// private constructor(
-// private readonly healthCheckActivity = HealthCheckActivity(healthCheck),
-// private readonly jobHookActivity = JobHookActivity(jobQueuer)
-// ) {}
-//
-// private async route(req: ITraceable<req: Request, LogTraceable>) {
-// return req.flatMap((req) => {
-// const { logger, item: { method, pathname } } = req;
-// if (pathname === "/health") {
-// return this.healthCheckActivity.healthCheck(req);
-// }
-// return this.jobHookActivity.processHook(req);
-// });
-// }
-//
-// public async serve(req: Request): Promise<Response> {
-// return LogTraceable(req).bimap(TraceUtil.withClassTrace(this)).map(this.route)
-// }
-//}
-//private route(
-// req: Traceable<Request & { pathname: string }>,
-//): Traceable<Promise<Response>> {
-// return req.flatMap((req) => {
-// const { logger, item: { method, pathname } } = req;
-// if (pathname === "/health") {
-// return this.healthCheckActivity.healthCheck(req);
-// }
-// return this.jobHookActivity.processHook(req);
-// });
-//}
+ private async route(req: LogTraceable<Request>) {
+ return req.flatMap((req) => {
+ const { item: request } = req;
+ const url = new URL(request.url);
+ if (url.pathname === "/health") {
+ return this.healthCheckActivity.healthCheck(req);
+ }
+ if (url.pathname === "/job") {
+ return this.jobHookActivity.processHook(req);
+ }
+ });
+ }
+
+ public async serve(req: Request): Promise<Response> {
+ return LogTraceable(req).bimap(TraceUtil.withClassTrace(this)).map(
+ this.route,
+ );
+ }
+}