50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
package datadogunifi
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
func tag(name string, value any) string {
 | 
						|
	return fmt.Sprintf("%s:%v", name, value)
 | 
						|
}
 | 
						|
 | 
						|
func tagMapToTags(tagMap map[string]string) []string {
 | 
						|
	tags := make([]string, 0)
 | 
						|
	for k, v := range tagMap {
 | 
						|
		tags = append(tags, tag(k, v))
 | 
						|
	}
 | 
						|
	return tags
 | 
						|
}
 | 
						|
 | 
						|
func tagMapToSimpleStrings(tagMap map[string]string) string {
 | 
						|
	result := ""
 | 
						|
	for k, v := range tagMap {
 | 
						|
		result = fmt.Sprintf("%s%s=\"%v\", ", result, k, v)
 | 
						|
	}
 | 
						|
	return strings.TrimRight(result, ", ")
 | 
						|
}
 | 
						|
 | 
						|
func metricNamespace(namespace string) func(string) string {
 | 
						|
	return func(name string) string {
 | 
						|
		return fmt.Sprintf("unifi.%s.%s", namespace, name)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func reportGaugeForFloat64Map(r report, metricName func(string) string, data map[string]float64, tags map[string]string) {
 | 
						|
	for name, value := range data {
 | 
						|
		_ = r.reportGauge(metricName(name), value, tagMapToTags(tags))
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// cleanTags removes any tag that is empty.
 | 
						|
func cleanTags(tags map[string]string) map[string]string {
 | 
						|
	for i := range tags {
 | 
						|
		if tags[i] == "" {
 | 
						|
			delete(tags, i)
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return tags
 | 
						|
}
 |