UNPKG

@cch137/format-utils

Version:

A collection of utility modules for formatting and processing data

18 lines (17 loc) 729 B
const singleString = (data) => data === undefined ? "" : Array.isArray(data) ? data[0] : data; const isRequest = (req) => req instanceof Request; const isNotEmptyString = (data) => typeof data === "string" ? /^\s*$/.test(data) : false; const trimIps = (ips) => ips.split(",")[0].trim(); export default function getRequestIp(req) { const ip = req?.ip; if (isNotEmptyString(ip)) return trimIps(ip); if (isRequest(req)) { const headers = req.headers; return trimIps(headers.get("x-forwarded-for") || headers.get("x-real-ip") || ""); } const headers = req.headers; return trimIps(singleString(headers["x-forwarded-for"]) || singleString(headers["x-real-ip"]) || ""); }