fiddy/apps/web/lib/server/request.ts

24 lines
803 B
TypeScript

if (process.env.NODE_ENV !== "test")
require("server-only");
import { headers } from "next/headers";
import { createRequestId } from "@/lib/server/errors";
function parseForwardedIp(value: string | null): string | null {
if (!value) return null;
const first = value.split(",")[0]?.trim();
if (!first) return null;
return first.slice(0, 64);
}
export async function getRequestMeta() {
const headerStore = await headers();
const forwardedRequestId = headerStore.get("x-request-id")?.trim();
const requestId = forwardedRequestId || createRequestId();
const ip = parseForwardedIp(headerStore.get("x-forwarded-for")) || parseForwardedIp(headerStore.get("x-real-ip"));
return {
requestId,
ip,
userAgent: headerStore.get("user-agent")
};
}