@cch137/format-utils
Version:
A collection of utility modules for formatting and processing data
18 lines (17 loc) • 729 B
JavaScript
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"]) ||
"");
}