You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
981 B
29 lines
981 B
import * as url from 'url'; |
|
|
|
export function normalizeUrl(grafanaUrl: string) { |
|
if(!grafanaUrl) { |
|
return grafanaUrl; |
|
} |
|
let urlObj = url.parse(grafanaUrl); |
|
if(urlObj.protocol !== 'http:' && urlObj.protocol !== 'https:') { |
|
grafanaUrl = `http://${grafanaUrl}`; |
|
urlObj = url.parse(grafanaUrl); |
|
console.log('No protocol provided in GRAFANA_URL -> inserting "http://"'); |
|
} |
|
if(urlObj.slashes === false) { |
|
urlObj = url.parse(`${urlObj.protocol}//${urlObj.pathname}`); |
|
console.log('No slashes were provided after the protocol -> inserting slashes'); |
|
} |
|
if(urlObj.pathname.slice(-1) === '/') { |
|
urlObj.pathname = urlObj.pathname.slice(0, -1); |
|
console.log('Removing the slash at the end of GRAFANA_URL'); |
|
} |
|
let finalUrl = `${urlObj.protocol}//${urlObj.hostname}`; |
|
if(urlObj.port !== null) { |
|
finalUrl = finalUrl + ':' + urlObj.port; |
|
} |
|
if(urlObj.pathname !== '') { |
|
finalUrl = finalUrl + urlObj.pathname; |
|
} |
|
return finalUrl; |
|
}
|
|
|