UNPKG

node-hue-api

Version:
38 lines (37 loc) 1.18 kB
const ipv6Regex = /^(\[)?(((?:[0-9a-f]{1,4}))((?::[0-9a-f]{1,4}))*)?::((?:[0-9a-f]{1,4}))((?::[0-9a-f]{1,4}))*|((?:[0-9a-f]{1,4}))((?::[0-9a-f]{1,4})){7}(])?$/; const bracketsRegex = /^\[.*]$/; export function getHttpsUrl(hostname, port) { return generateUrl('https', hostname, port); } export function getHttpUrl(hostname, port) { return generateUrl('http', hostname, port); } export function isIpv6Host(value) { if (value) { const trimmedValue = value.toLowerCase().trim(); if (ipv6Regex.test(trimmedValue)) { return true; } } return false; } export function cleanHostname(hostname) { if (bracketsRegex.test(hostname)) { return hostname.substring(1, hostname.length - 1); } return hostname; } function escapeIPv6Address(address) { let result = address.trim(); if (!bracketsRegex.test(result)) { result = `[${address}]`; } return result; } function generateUrl(scheme, hostname, port) { let escapedHostName = hostname; if (isIpv6Host(hostname)) { escapedHostName = escapeIPv6Address(hostname); } return new URL(`${scheme}://${escapedHostName}:${port}`); }