github.com/livekit/protocol@v1.39.3/utils/xtwirp/handler.go (about) 1 package xtwirp 2 3 import "net/http" 4 5 // Server is a minimal interface for a Twirp server. 6 type Server interface { 7 http.Handler 8 PathPrefix() string 9 } 10 11 // WrapHandler wraps the Twirp server handler with our custom middleware. 12 func WrapHandler(s Server) http.Handler { 13 wrappers := []func(http.Handler) http.Handler{ 14 PassHeadersHandler, 15 } 16 var h http.Handler = s 17 for _, wrapper := range wrappers { 18 h = wrapper(h) 19 } 20 return h 21 } 22 23 // RegisterServer registers Twirp server on an HTTP mux. 24 // It also calls WrapHandler to add default middleware. 25 func RegisterServer(mux *http.ServeMux, s Server) { 26 mux.Handle(s.PathPrefix(), WrapHandler(s)) 27 }