24 lines
803 B
TypeScript
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")
|
|
};
|
|
}
|