func newServer(httpServer *http.Server, ath auth.Authenticater, hashRing *hashRing) *server { s := &server{ connectionCloser: make(chan struct{}), shutdownChan: make(chan struct{}), http: httpServer, hashRing: hashRing, credStore: make(map[string]string), tokenLock: new(int32), recentTokensLock: new(sync.RWMutex), recentTokens: make(map[string]string), } mux := http.NewServeMux() mux.HandleFunc("/drain", auth.WrapAuth(ath, func(w http.ResponseWriter, r *http.Request) { s.serveDrain(w, r) s.recycleConnection(w) })) mux.HandleFunc("/health", s.serveHealth) mux.HandleFunc("/health/influxdb", auth.WrapAuth(ath, s.serveInfluxDBHealth)) mux.HandleFunc("/target/", auth.WrapAuth(ath, s.serveTarget)) s.http.Handler = mux return s }
func main() { auth := authenticater.NewBasicAuth() auth.AddPrincipal("foo", "bar") http.HandleFunc("/", authenticater.WrapAuth(auth, func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello")) })) http.ListenAndServe(":8080", nil) }