Compare commits
3 Commits
89f016ed9d
...
v0.9.1
Author | SHA1 | Date | |
---|---|---|---|
f8279d9653 | |||
b44b6a331c | |||
adfedc9239 |
@ -2,6 +2,7 @@ package grpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
|
||||
@ -18,7 +19,7 @@ func (a *appGRPCServer) registerServiceGatewayHandlers(ctx context.Context, serv
|
||||
if len(service.GwRegistrationFuncs) < 1 {
|
||||
return
|
||||
} else if a.gatewayMux == nil {
|
||||
a.gatewayMux = runtime.NewServeMux()
|
||||
a.gatewayMux = runtime.NewServeMux(a.opts.GRPCGatewayOpts...)
|
||||
}
|
||||
|
||||
ctx, span := a.tracer.Start(ctx, "appgrpc.init.prepare.service.gwHandlers", trace.WithAttributes(
|
||||
@ -29,8 +30,15 @@ func (a *appGRPCServer) registerServiceGatewayHandlers(ctx context.Context, serv
|
||||
|
||||
clientConn := a.GetClientConn(ctx)
|
||||
|
||||
var errs error
|
||||
for _, registerGW := range service.GwRegistrationFuncs {
|
||||
registerGW(ctx, a.gatewayMux, clientConn)
|
||||
errs = errors.Join(errs, registerGW(ctx, a.gatewayMux, clientConn))
|
||||
a.logger.Debug().Any("fwo", a.gatewayMux.GetForwardResponseOptions()).
|
||||
Msg("calling gateway registration func")
|
||||
}
|
||||
|
||||
if errs != nil {
|
||||
panic(errs)
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,6 +58,7 @@ func (a *appGRPCServer) GetClientConn(ctx context.Context) *grpc.ClientConn {
|
||||
if err != nil {
|
||||
span.RecordError(err)
|
||||
span.SetStatus(codes.Error, err.Error())
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return clientConn
|
||||
|
@ -10,8 +10,8 @@ import (
|
||||
)
|
||||
|
||||
type GRPCOpts struct {
|
||||
*config.GRPCConfig
|
||||
*AppGRPC
|
||||
*config.GRPCConfig // Settings configurable by env or yaml
|
||||
*AppGRPC // Settings provided in code
|
||||
}
|
||||
|
||||
type AppGRPC struct {
|
||||
@ -19,7 +19,8 @@ type AppGRPC struct {
|
||||
UnaryInterceptors []grpc.UnaryServerInterceptor
|
||||
StreamInterceptors []grpc.StreamServerInterceptor
|
||||
GRPCOpts []grpc.ServerOption
|
||||
GRPCDialOpts []grpc.DialOption // Map ServerOptions to DialOpts for GRPC Gateway support
|
||||
GRPCDialOpts []grpc.DialOption // Map ServerOptions to DialOpts for GRPC Gateway support
|
||||
GRPCGatewayOpts []runtime.ServeMuxOption // Configure grpc-gateway ServeMux
|
||||
GRPCDone <-chan error
|
||||
gatewayMux *runtime.ServeMux
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
@ -60,8 +61,15 @@ func prepHTTPServer(opts *opts.AppHTTP) *http.Server {
|
||||
// Inject extra handlers if given
|
||||
// Used for grpc-gateway runtime.ServeMux handlers
|
||||
for _, h := range opts.Handlers {
|
||||
// prefix must end in / to route sub-paths
|
||||
if !strings.HasSuffix(h.Prefix, "/") {
|
||||
h.Prefix = h.Prefix + "/"
|
||||
}
|
||||
|
||||
// if enabled, the path prefix is stripped before
|
||||
// requests are sent to the handler
|
||||
if h.StripPrefix {
|
||||
h.Handler = http.StripPrefix(h.Prefix, h.Handler)
|
||||
h.Handler = http.StripPrefix(h.Prefix[:len(h.Prefix)-1], h.Handler)
|
||||
}
|
||||
mux.Handle(h.Prefix, h.Handler)
|
||||
}
|
||||
|
Reference in New Issue
Block a user