mirror of
https://github.com/kubernetes-sigs/prometheus-adapter.git
synced 2026-04-06 17:57:51 +00:00
Travis seems to be having issues pulling deps, so we'll have to check in the vendor directory and prevent the makefile from trying to regenerate it normally.
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package restful
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
type mime struct {
|
|
media string
|
|
quality float64
|
|
}
|
|
|
|
// insertMime adds a mime to a list and keeps it sorted by quality.
|
|
func insertMime(l []mime, e mime) []mime {
|
|
for i, each := range l {
|
|
// if current mime has lower quality then insert before
|
|
if e.quality > each.quality {
|
|
left := append([]mime{}, l[0:i]...)
|
|
return append(append(left, e), l[i:]...)
|
|
}
|
|
}
|
|
return append(l, e)
|
|
}
|
|
|
|
// sortedMimes returns a list of mime sorted (desc) by its specified quality.
|
|
func sortedMimes(accept string) (sorted []mime) {
|
|
for _, each := range strings.Split(accept, ",") {
|
|
typeAndQuality := strings.Split(strings.Trim(each, " "), ";")
|
|
if len(typeAndQuality) == 1 {
|
|
sorted = insertMime(sorted, mime{typeAndQuality[0], 1.0})
|
|
} else {
|
|
// take factor
|
|
parts := strings.Split(typeAndQuality[1], "=")
|
|
if len(parts) == 2 {
|
|
f, err := strconv.ParseFloat(parts[1], 64)
|
|
if err != nil {
|
|
traceLogger.Printf("unable to parse quality in %s, %v", each, err)
|
|
} else {
|
|
sorted = insertMime(sorted, mime{typeAndQuality[0], f})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return
|
|
}
|