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  }