GDPR compliance — IPs are HMAC-SHA256'd (truncated to 16 hex chars) before being pushed to the Redis queue, so only pseudonymous tokens are ever stored. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
20 lines
545 B
TypeScript
20 lines
545 B
TypeScript
export default defineEventHandler((event) => {
|
|
const path = getRequestURL(event).pathname;
|
|
if (!path.startsWith("/api/v1/rates")) return;
|
|
|
|
const ip = getRequestIP(event, { xForwardedFor: true }) ?? "127.0.0.1";
|
|
const method = event.method;
|
|
const userAgent = getRequestHeader(event, "user-agent") ?? "";
|
|
|
|
event.node.res.on("finish", () => {
|
|
logRequest({
|
|
ip: anonymizeIp(ip),
|
|
path,
|
|
method,
|
|
statusCode: event.node.res.statusCode,
|
|
userAgent,
|
|
timestamp: new Date().toISOString(),
|
|
});
|
|
});
|
|
});
|