func hashedPick()

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]
}