1export default class UrlBuilder { 2 static buildAzureMonitorGetMetricNamespacesUrl( 3 baseUrl: string, 4 subscriptionId: string, 5 resourceGroup: string, 6 metricDefinition: string, 7 resourceName: string, 8 apiVersion: string 9 ) { 10 const metricDefinitionArray = metricDefinition.split('/'); 11 const resourceNameArray = resourceName.split('/'); 12 const provider = metricDefinitionArray.shift(); 13 const urlArray = [baseUrl, subscriptionId, 'resourceGroups', resourceGroup, 'providers', provider]; 14 for (const i in metricDefinitionArray) { 15 urlArray.push(metricDefinitionArray[i]); 16 urlArray.push(resourceNameArray[i]); 17 } 18 const urlPrefix = urlArray.join('/'); 19 return `${urlPrefix}/providers/microsoft.insights/metricNamespaces?api-version=${apiVersion}`; 20 } 21 22 static buildAzureMonitorGetMetricNamesUrl( 23 baseUrl: string, 24 subscriptionId: string, 25 resourceGroup: string, 26 metricDefinition: string, 27 resourceName: string, 28 metricNamespace: string, 29 apiVersion: string 30 ) { 31 const metricDefinitionArray = metricDefinition.split('/'); 32 const resourceNameArray = resourceName.split('/'); 33 const provider = metricDefinitionArray.shift(); 34 const urlArray = [baseUrl, subscriptionId, 'resourceGroups', resourceGroup, 'providers', provider]; 35 for (const i in metricDefinitionArray) { 36 urlArray.push(metricDefinitionArray[i]); 37 urlArray.push(resourceNameArray[i]); 38 } 39 const urlPrefix = urlArray.join('/'); 40 return ( 41 `${urlPrefix}/providers/microsoft.insights/metricdefinitions?api-version=${apiVersion}` + 42 `&metricnamespace=${encodeURIComponent(metricNamespace)}` 43 ); 44 } 45} 46