Source File
experiment.go
Belonging Package
golang.org/x/pkgsite/internal/middleware
package middleware
import (
)
const experimentQueryParamKey = "experiment"
type Reporter interface {
Report(errorreporting.Entry)
}
type ExperimentGetter func(context.Context) ([]*internal.Experiment, error)
type Experimenter struct {
p *poller.Poller
}
func ( context.Context, time.Duration, ExperimentGetter, Reporter) ( *Experimenter, error) {
defer derrors.Wrap(&, "middleware.NewExperimenter")
func ( *Experimenter) Middleware {
return func( http.Handler) http.Handler {
return http.HandlerFunc(func( http.ResponseWriter, *http.Request) {
:= .setExperimentsForRequest()
.ServeHTTP(, )
})
}
}
:= make([]*internal.Experiment, len())
:= *
[] = &
}
return
}
func ( *Experimenter) ( *http.Request) *http.Request {
:= .p.Current().([]*internal.Experiment)
var []string
for , := range {
if shouldSetExperiment(, ) {
= append(, .Name)
}
}
= append(, .URL.Query()[experimentQueryParamKey]...)
return .WithContext(experiment.NewContext(.Context(), ...))
}
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |