link-stack/apps/link/app/(main)/admin/metamigo/_lib/absolute-url.ts
Darren Clarke c620e4bf25 Flatten
2023-08-25 07:11:33 +00:00

35 lines
762 B
TypeScript

import { IncomingMessage } from "node:http";
function absoluteUrl(
req?: IncomingMessage,
localhostAddress = "localhost:3000"
) {
let host =
(req?.headers ? req.headers.host : window.location.host) ||
localhostAddress;
let protocol = /^localhost(:\d+)?$/.test(host) ? "http:" : "https:";
if (
req &&
req.headers["x-forwarded-host"] &&
typeof req.headers["x-forwarded-host"] === "string"
) {
host = req.headers["x-forwarded-host"];
}
if (
req &&
req.headers["x-forwarded-proto"] &&
typeof req.headers["x-forwarded-proto"] === "string"
) {
protocol = `${req.headers["x-forwarded-proto"]}:`;
}
return {
protocol,
host,
origin: protocol + "//" + host,
};
}
export default absoluteUrl;