13 // insertMime adds a mime to a list and keeps it sorted by quality.
14 func insertMime(l []mime, e mime) []mime {
15 for i, each := range l {
16 // if current mime has lower quality then insert before
17 if e.quality > each.quality {
18 left := append([]mime{}, l[0:i]...)
19 return append(append(left, e), l[i:]...)
25 // sortedMimes returns a list of mime sorted (desc) by its specified quality.
26 func sortedMimes(accept string) (sorted []mime) {
27 for _, each := range strings.Split(accept, ",") {
28 typeAndQuality := strings.Split(strings.Trim(each, " "), ";")
29 if len(typeAndQuality) == 1 {
30 sorted = insertMime(sorted, mime{typeAndQuality[0], 1.0})
33 parts := strings.Split(typeAndQuality[1], "=")
35 f, err := strconv.ParseFloat(parts[1], 64)
37 traceLogger.Printf("unable to parse quality in %s, %v", each, err)
39 sorted = insertMime(sorted, mime{typeAndQuality[0], f})