1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import {
isEither,
ITraceable,
PenguenoRequest,
PenguenoResponse,
ResponseOpts,
ServerTrace,
} from '@emprespresso/pengueno';
type Jsonable = any;
export class JsonResponse extends PenguenoResponse {
constructor(req: ITraceable<PenguenoRequest, ServerTrace>, e: Jsonable, _opts: ResponseOpts) {
const opts = { ..._opts, headers: { ..._opts.headers, 'Content-Type': 'application/json' } };
if (isEither<Jsonable, Jsonable>(e)) {
super(
req,
JSON.stringify(
e.fold(
(error) => ({ error, ok: undefined }),
(ok) => ({ ok }),
),
),
opts,
);
return;
}
super(req, JSON.stringify(Math.floor(opts.status / 100) > 4 ? { error: e } : { ok: e }), opts);
}
}
|