package main import ( "html/template" "log" "math/big" "math/rand" "net/http" "os" "strconv" "github.com/didiercrunch/doorman" ) func getProbs(probs ...float64) []*big.Rat { ret := make([]*big.Rat, len(probs)) for i, p := range probs { ret[i] = new(big.Rat).SetFloat64(p) } return ret } var wab *doorman.Doorman func init() { var err error if wab, err = doorman.New("zST8_FWcPDT2-14wDQAAAQ==", getProbs(1, 0, 0)); err != nil { panic(err) } if err := wab.Subscriber("http://localhost:1999"); err != nil { panic(err) } } func GetDoormanValue(r *http.Request) (string, int) { switch wab.GetCaseFromData([]byte(r.URL.String())) { case 0: return "red", 0 case 1: return "green", 1 case 2: return "blue", 2 } log.Panic("impossible value returned by doorman") return "", 0 } var tmpl = `
This doorman depend solely on the url. If you hit different url you will have different doorman results. For example, here is a random url: {{ .nextUrl }}