package grpc import ( "net/http" "strings" "github.com/kataras/iris/v12/core/router" ) // New returns a new gRPC Iris router wrapper for a gRPC server. // useful when you want to share one port (such as 443 for https) between gRPC and Iris. // // The Iris server SHOULD run under HTTP/2 and clients too. // // Usage: // import grpcWrapper "github.com/kataras/iris/v12/middleware/grpc" // [...] // app := iris.New() // grpcServer := grpc.NewServer() // app.WrapRouter(grpcWrapper.New(grpcServer)) func New(grpcServer http.Handler) router.WrapperFunc { return func(w http.ResponseWriter, r *http.Request, mux http.HandlerFunc) { if r.ProtoMajor == 2 && strings.HasPrefix(r.Header.Get("Content-Type"), "application/grpc") { grpcServer.ServeHTTP(w, r) return } mux.ServeHTTP(w, r) } }