diff --git a/cmd/routed/server.go b/cmd/routed/server.go index 0db3047..ff116f9 100644 --- a/cmd/routed/server.go +++ b/cmd/routed/server.go @@ -160,7 +160,7 @@ func New(cfg Config) (*Server, error) { hs := &http.Server{ TLSConfig: tc, Addr: cfg.GRPCAddr, - Handler: middleware.Trace("twirp-https")(mux), + Handler: middleware.Twirp(middleware.Trace("twirp-https")(mux)), } go hs.ListenAndServeTLS("", "") diff --git a/internal/middleware/twirp.go b/internal/middleware/twirp.go new file mode 100644 index 0000000..a5aacc8 --- /dev/null +++ b/internal/middleware/twirp.go @@ -0,0 +1,17 @@ +package middleware + +import ( + "net/http" + + "github.com/twitchtv/twirp" +) + +// Twirp adds the needed values to the request context for twirp services. +func Twirp(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + ctx, _ = twirp.WithHTTPRequestHeaders(ctx, r.Header) + + next.ServeHTTP(w, r.WithContext(ctx)) + }) +}