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  }