summaryrefslogtreecommitdiff
path: root/u/server/filter/json.ts
diff options
context:
space:
mode:
authorElizabeth Hunt <me@liz.coffee>2025-06-29 17:31:30 -0700
committerElizabeth Hunt <me@liz.coffee>2025-06-29 17:31:30 -0700
commit58be1809c46cbe517a18d86d0af52179dcc5cbf6 (patch)
tree9ccc678b3fd48c1a52fe501600dd2c2051740a55 /u/server/filter/json.ts
parentd4791f3d357634daf506fb8f91cc5332a794c421 (diff)
downloadci-58be1809c46cbe517a18d86d0af52179dcc5cbf6.tar.gz
ci-58be1809c46cbe517a18d86d0af52179dcc5cbf6.zip
Move to nodejs and also lots of significant refactoring that should've been broken up but idgaf
Diffstat (limited to 'u/server/filter/json.ts')
-rw-r--r--u/server/filter/json.ts20
1 files changed, 6 insertions, 14 deletions
diff --git a/u/server/filter/json.ts b/u/server/filter/json.ts
index 527d483..bc53d47 100644
--- a/u/server/filter/json.ts
+++ b/u/server/filter/json.ts
@@ -15,30 +15,22 @@ export interface JsonTransformer<R, ParsedJson = unknown> {
(json: ITraceable<ParsedJson, ServerTrace>): IEither<PenguenoError, R>;
}
-const ParseJsonMetric = Metric.fromName('JsonParse');
+const ParseJsonMetric = Metric.fromName('JsonParse').asResult();
export const jsonModel =
<MessageT>(jsonTransformer: JsonTransformer<MessageT>): RequestFilter<MessageT> =>
(r: ITraceable<PenguenoRequest, ServerTrace>) =>
r
- .bimap(TraceUtil.withFunctionTrace(jsonModel))
- .bimap(TraceUtil.withMetricTrace(ParseJsonMetric))
+ .flatMap(TraceUtil.withFunctionTrace(jsonModel))
+ .flatMap(TraceUtil.withMetricTrace(ParseJsonMetric))
.map((j) =>
- Either.fromFailableAsync<Error, MessageT>(<Promise<MessageT>>j.get().json()).then((either) =>
+ Either.fromFailableAsync<Error, MessageT>(<Promise<MessageT>>j.get().req.json()).then((either) =>
either.mapLeft((errReason) => {
- j.trace.addTrace(LogLevel.WARN).trace(errReason);
+ j.trace.traceScope(LogLevel.WARN).trace(errReason);
return new PenguenoError('seems to be invalid JSON (>//<) can you fix?', 400);
}),
),
)
- .peek(
- TraceUtil.promiseify((traceableEither) =>
- traceableEither
- .get()
- .fold(({ isLeft }) =>
- traceableEither.trace.trace(ParseJsonMetric[isLeft ? 'failure' : 'success']),
- ),
- ),
- )
+ .flatMapAsync(TraceUtil.promiseify(TraceUtil.traceResultingEither(ParseJsonMetric)))
.map(
TraceUtil.promiseify((traceableEitherJson) =>
traceableEitherJson