mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 04:55:31 +00:00
tsweb: fold StdHandlerOpts and StdHandler200s with StdHandler.
Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
parent
72343fbbec
commit
48c25fa36f
@ -57,7 +57,10 @@ func main() {
|
|||||||
|
|
||||||
mux := tsweb.NewMux(http.HandlerFunc(debugHandler))
|
mux := tsweb.NewMux(http.HandlerFunc(debugHandler))
|
||||||
mux.Handle("/metrics", tsweb.Protected(proxy))
|
mux.Handle("/metrics", tsweb.Protected(proxy))
|
||||||
mux.Handle("/varz", tsweb.Protected(tsweb.StdHandler(&goVarsHandler{*goVarsURL}, log.Printf)))
|
mux.Handle("/varz", tsweb.Protected(tsweb.StdHandler(&goVarsHandler{*goVarsURL}, tsweb.HandlerOptions{
|
||||||
|
Quiet200s: true,
|
||||||
|
Logf: log.Printf,
|
||||||
|
})))
|
||||||
|
|
||||||
ch := &certHolder{
|
ch := &certHolder{
|
||||||
hostname: *hostname,
|
hostname: *hostname,
|
||||||
|
@ -186,13 +186,6 @@ type HandlerOptions struct {
|
|||||||
StatusCodeCounters *expvar.Map
|
StatusCodeCounters *expvar.Map
|
||||||
}
|
}
|
||||||
|
|
||||||
// StdHandler converts a ReturnHandler into a standard http.Handler.
|
|
||||||
// Handled requests are logged using logf, as are any errors. Errors
|
|
||||||
// are handled as specified by the Handler interface.
|
|
||||||
func StdHandler(h ReturnHandler, logf logger.Logf) http.Handler {
|
|
||||||
return StdHandlerOpts(h, HandlerOptions{Logf: logf, Now: time.Now})
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReturnHandlerFunc is an adapter to allow the use of ordinary
|
// ReturnHandlerFunc is an adapter to allow the use of ordinary
|
||||||
// functions as ReturnHandlers. If f is a function with the
|
// functions as ReturnHandlers. If f is a function with the
|
||||||
// appropriate signature, ReturnHandlerFunc(f) is a ReturnHandler that
|
// appropriate signature, ReturnHandlerFunc(f) is a ReturnHandler that
|
||||||
@ -204,22 +197,16 @@ func (f ReturnHandlerFunc) ServeHTTPReturn(w http.ResponseWriter, r *http.Reques
|
|||||||
return f(w, r)
|
return f(w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
// StdHandlerNo200s is like StdHandler, but successfully handled HTTP
|
// StdHandler converts a ReturnHandler into a standard http.Handler.
|
||||||
// requests don't write an access log entry to logf.
|
|
||||||
//
|
|
||||||
// TODO(josharian): eliminate this and StdHandler in favor of StdHandlerOpts,
|
|
||||||
// rename StdHandlerOpts to StdHandler. Will be a breaking API change.
|
|
||||||
func StdHandlerNo200s(h ReturnHandler, logf logger.Logf) http.Handler {
|
|
||||||
return StdHandlerOpts(h, HandlerOptions{Logf: logf, Now: time.Now, Quiet200s: true})
|
|
||||||
}
|
|
||||||
|
|
||||||
// StdHandlerOpts converts a ReturnHandler into a standard http.Handler.
|
|
||||||
// Handled requests are logged using opts.Logf, as are any errors.
|
// Handled requests are logged using opts.Logf, as are any errors.
|
||||||
// Errors are handled as specified by the Handler interface.
|
// Errors are handled as specified by the Handler interface.
|
||||||
func StdHandlerOpts(h ReturnHandler, opts HandlerOptions) http.Handler {
|
func StdHandler(h ReturnHandler, opts HandlerOptions) http.Handler {
|
||||||
if opts.Now == nil {
|
if opts.Now == nil {
|
||||||
opts.Now = time.Now
|
opts.Now = time.Now
|
||||||
}
|
}
|
||||||
|
if opts.Logf == nil {
|
||||||
|
opts.Logf = logger.Discard
|
||||||
|
}
|
||||||
return retHandler{h, opts}
|
return retHandler{h, opts}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -248,7 +248,7 @@ func TestStdHandler(t *testing.T) {
|
|||||||
clock.Reset()
|
clock.Reset()
|
||||||
|
|
||||||
rec := noopHijacker{httptest.NewRecorder(), false}
|
rec := noopHijacker{httptest.NewRecorder(), false}
|
||||||
h := StdHandlerOpts(test.rh, HandlerOptions{Logf: logf, Now: clock.Now})
|
h := StdHandler(test.rh, HandlerOptions{Logf: logf, Now: clock.Now})
|
||||||
h.ServeHTTP(&rec, test.r)
|
h.ServeHTTP(&rec, test.r)
|
||||||
res := rec.Result()
|
res := rec.Result()
|
||||||
if res.StatusCode != test.wantCode {
|
if res.StatusCode != test.wantCode {
|
||||||
@ -277,8 +277,7 @@ func BenchmarkLogNot200(b *testing.B) {
|
|||||||
// Implicit 200 OK.
|
// Implicit 200 OK.
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
discardLogger := func(string, ...interface{}) {}
|
h := StdHandler(rh, HandlerOptions{Quiet200s: true})
|
||||||
h := StdHandlerNo200s(rh, discardLogger)
|
|
||||||
req := httptest.NewRequest("GET", "/", nil)
|
req := httptest.NewRequest("GET", "/", nil)
|
||||||
rw := new(httptest.ResponseRecorder)
|
rw := new(httptest.ResponseRecorder)
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
@ -293,8 +292,7 @@ func BenchmarkLog(b *testing.B) {
|
|||||||
// Implicit 200 OK.
|
// Implicit 200 OK.
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
discardLogger := func(string, ...interface{}) {}
|
h := StdHandler(rh, HandlerOptions{})
|
||||||
h := StdHandler(rh, discardLogger)
|
|
||||||
req := httptest.NewRequest("GET", "/", nil)
|
req := httptest.NewRequest("GET", "/", nil)
|
||||||
rw := new(httptest.ResponseRecorder)
|
rw := new(httptest.ResponseRecorder)
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
|
Loading…
Reference in New Issue
Block a user