github.com/grafana/pyroscope@v1.18.0/pkg/api/connect_options.go (about) 1 package api 2 3 import ( 4 "connectrpc.com/connect" 5 6 connectapi "github.com/grafana/pyroscope/pkg/api/connect" 7 "github.com/grafana/pyroscope/pkg/tenant" 8 "github.com/grafana/pyroscope/pkg/util" 9 "github.com/grafana/pyroscope/pkg/util/delayhandler" 10 "github.com/grafana/pyroscope/pkg/validation" 11 ) 12 13 func connectInterceptorRecovery() connect.HandlerOption { 14 return connect.WithInterceptors(util.RecoveryInterceptor) 15 } 16 17 func (a *API) connectInterceptorAuth() connect.HandlerOption { 18 return a.cfg.GrpcAuthMiddleware 19 } 20 21 func (a *API) connectInterceptorLog() connect.HandlerOption { 22 return connect.WithInterceptors(util.NewLogInterceptor(a.logger)) 23 } 24 25 func (a *API) connectInterceptorDelay(limits delayhandler.Limits) connect.HandlerOption { 26 return connect.WithInterceptors(delayhandler.NewConnect(limits)) 27 } 28 29 func (a *API) connectOptionsRecovery() []connect.HandlerOption { 30 return append(connectapi.DefaultHandlerOptions(), connectInterceptorRecovery()) 31 } 32 33 func (a *API) connectOptionsAuthRecovery() []connect.HandlerOption { 34 return append(connectapi.DefaultHandlerOptions(), a.connectInterceptorAuth(), connectInterceptorRecovery()) 35 } 36 37 func (a *API) connectOptionsAuthDelayRecovery(limits *validation.Overrides) []connect.HandlerOption { 38 // no per tenant overrides implemented for connect requests 39 messageLimit := int(limits.IngestionBodyLimitBytes(tenant.DefaultTenantID)) 40 return append(connectapi.DefaultHandlerOptions(), 41 a.connectInterceptorAuth(), 42 connect.WithReadMaxBytes(messageLimit), 43 a.connectInterceptorDelay(limits), 44 connectInterceptorRecovery(), 45 ) 46 } 47 48 func (a *API) connectOptionsAuthLogRecovery() []connect.HandlerOption { 49 return append(connectapi.DefaultHandlerOptions(), a.connectInterceptorAuth(), a.connectInterceptorLog(), connectInterceptorRecovery()) 50 }