@sentry/core
Version:
Base implementation for all Sentry JavaScript SDKs
38 lines (36 loc) • 1.49 kB
JavaScript
function getRequestOptions(request) {
const hostWithPort = request.host || "";
const portInHost = /^(.*):(\d+)$/.exec(hostWithPort);
const hostname = portInHost ? portInHost[1] : hostWithPort;
const port = request.port ?? (portInHost ? Number(portInHost[2]) : void 0);
return {
method: request.method,
port,
protocol: request.protocol,
host: request.host,
hostname,
path: request.path,
headers: request.getHeaders()
};
}
function getRequestUrl(requestOptions) {
try {
return String(getRequestUrlObject(requestOptions));
} catch {
return "";
}
}
function getRequestUrlObject(requestOptions) {
const protocol = requestOptions.protocol || "http:";
const hostHeader = requestOptions.headers?.host && String(requestOptions.headers?.host);
const hostname = hostHeader || requestOptions.hostname || requestOptions.host || "";
const port = !requestOptions.port || requestOptions.port === 80 || requestOptions.port === 443 || /^(.*):(\d+)$/.test(hostname) ? "" : `:${requestOptions.port}`;
const path = requestOptions.path ? requestOptions.path : "/";
const base = `${protocol}//${hostname}${port}`;
return new URL(path.startsWith("//") ? `${base}${path}` : path, base);
}
function getRequestUrlFromClientRequest(request) {
return String(getRequestUrl(getRequestOptions(request)));
}
export { getRequestOptions, getRequestUrl, getRequestUrlFromClientRequest, getRequestUrlObject };
//# sourceMappingURL=get-request-url.js.map