in og/og.go [319:343]
func hashedPick(rawurl string, choices []string) string {
var key string
url, err := url.Parse(rawurl)
if err != nil {
log.Printf("Failed to parse URL %s in hashed pick: %s", url, err)
key = ""
} else {
key = url.Path
// TODO figure out if fixing this will break things before removing it
if url.RawQuery == "" {
key += "undefined"
} else {
key += url.RawQuery
}
}
md5 := md5.New()
io.WriteString(md5, key)
hex := fmt.Sprintf("%x", md5.Sum(nil))
pick, err := strconv.ParseUint(hex[:8], 16, 64)
if err != nil {
log.Printf("Failed to parse hex \"%s\" with error: %s", hex[:8], err)
}
index := pick % uint64(len(choices))
return choices[index]
}