chore(api): clean up index file

This commit is contained in:
Carl-Gerhard Lindesvärd
2024-10-24 19:30:15 +02:00
parent 035d405a04
commit 949278ff1c
5 changed files with 189 additions and 140 deletions

View File

@@ -0,0 +1,16 @@
import type {
FastifyReply,
FastifyRequest,
HookHandlerDoneFunction,
} from 'fastify';
export function requestIdHook(
request: FastifyRequest,
reply: FastifyReply,
done: HookHandlerDoneFunction,
) {
if (!request.headers['request-id']) {
request.headers['request-id'] = request.id;
}
done();
}

View File

@@ -0,0 +1,58 @@
import type {
FastifyReply,
FastifyRequest,
HookHandlerDoneFunction,
} from 'fastify';
import { path, pick } from 'ramda';
const ignoreLog = ['/healthcheck', '/metrics', '/misc'];
const ignoreMethods = ['OPTIONS'];
const getTrpcInput = (
request: FastifyRequest,
): Record<string, unknown> | undefined => {
const input = path(['query', 'input'], request);
try {
return typeof input === 'string' ? JSON.parse(input).json : input;
} catch (e) {
return undefined;
}
};
export function requestLoggingHook(
request: FastifyRequest,
reply: FastifyReply,
done: HookHandlerDoneFunction,
) {
if (ignoreMethods.includes(request.method)) {
return done();
}
if (ignoreLog.some((path) => request.url.startsWith(path))) {
return done();
}
if (request.url.includes('trpc')) {
request.log.info('request done', {
url: request.url.split('?')[0],
method: request.method,
input: getTrpcInput(request),
elapsed: reply.elapsedTime,
});
} else {
request.log.info('request done', {
url: request.url,
method: request.method,
elapsed: reply.elapsedTime,
headers: pick(
[
'openpanel-client-id',
'openpanel-sdk-name',
'openpanel-sdk-version',
'user-agent',
],
request.headers,
),
body: request.body,
});
}
done();
}

View File

@@ -0,0 +1,14 @@
import type {
FastifyReply,
FastifyRequest,
HookHandlerDoneFunction,
} from 'fastify';
export function timestampHook(
request: FastifyRequest,
reply: FastifyReply,
done: HookHandlerDoneFunction,
) {
request.timestamp = Date.now();
done();
}