gateway

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 12, 2025 License: MIT Imports: 32 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrMissingConfig = errors.New("config must be provided and not nil")
	ErrUnauthorized  = errors.New("unauthorized")
)

Functions

func AuthorizationHeaderFromContext

func AuthorizationHeaderFromContext(ctx context.Context) string

func ClientIPFromContext

func ClientIPFromContext(ctx context.Context) string

func LoadConfigFromEnv

func LoadConfigFromEnv() (*config.GatewayConfig, error)

func MustLoadConfig

func MustLoadConfig() *config.GatewayConfig

func SetupRedisClient

func SetupRedisClient(
	ctx context.Context,
	redisUrl string,
	timeout time.Duration,
) (redis.UniversalClient, error)

Types

type AuthorizePublishFn

type AuthorizePublishFn func(ctx context.Context, identity Identity, req PublishRequestSummary) (bool, error)

func NewRateLimitAuthorizer

func NewRateLimitAuthorizer(config *config.GatewayConfig, rateLimit RateLimit) AuthorizePublishFn

type GatewayInterceptor

type GatewayInterceptor struct {
	// contains filtered or unexported fields
}

func NewGatewayInterceptor

func NewGatewayInterceptor(
	logger *zap.Logger,
	identityFn IdentityFn,
	authorizers []AuthorizePublishFn,
) *GatewayInterceptor

func (*GatewayInterceptor) Stream

func (*GatewayInterceptor) Unary

type GatewayService

type GatewayService interface {
	WaitForShutdown()
}

type GatewayServiceBuilder

type GatewayServiceBuilder struct {
	// contains filtered or unexported fields
}

func (*GatewayServiceBuilder) Build

func (*GatewayServiceBuilder) WithAuthorizers

func (b *GatewayServiceBuilder) WithAuthorizers(
	authorizers ...AuthorizePublishFn,
) IGatewayServiceBuilder

func (*GatewayServiceBuilder) WithBlockchainPublisher

func (b *GatewayServiceBuilder) WithBlockchainPublisher(
	blockchainPublisher blockchain.IBlockchainPublisher,
) IGatewayServiceBuilder

func (*GatewayServiceBuilder) WithClientMetrics

func (b *GatewayServiceBuilder) WithClientMetrics(
	clientMetrics *grpcprom.ClientMetrics,
) IGatewayServiceBuilder

func (*GatewayServiceBuilder) WithContext

func (*GatewayServiceBuilder) WithIdentityFn

func (b *GatewayServiceBuilder) WithIdentityFn(identityFn IdentityFn) IGatewayServiceBuilder

func (*GatewayServiceBuilder) WithLogger

func (b *GatewayServiceBuilder) WithLogger(
	logger *zap.Logger,
) IGatewayServiceBuilder

func (*GatewayServiceBuilder) WithMetricsServer

func (b *GatewayServiceBuilder) WithMetricsServer(
	metricsServer *metrics.Server,
) IGatewayServiceBuilder

func (*GatewayServiceBuilder) WithNodeRegistry

func (b *GatewayServiceBuilder) WithNodeRegistry(
	nodeRegistry registry.NodeRegistry,
) IGatewayServiceBuilder

func (*GatewayServiceBuilder) WithNonceManager

func (b *GatewayServiceBuilder) WithNonceManager(
	nonceManager noncemanager.NonceManager,
) IGatewayServiceBuilder

func (*GatewayServiceBuilder) WithPromRegistry

func (b *GatewayServiceBuilder) WithPromRegistry(
	promRegistry *prometheus.Registry,
) IGatewayServiceBuilder

type GatewayServiceError

type GatewayServiceError interface {
	error
	Code() codes.Code
	ClientMessage() string
}

type IGatewayServiceBuilder

type IGatewayServiceBuilder interface {
	WithIdentityFn(identityFn IdentityFn) IGatewayServiceBuilder
	WithAuthorizers(authorizers ...AuthorizePublishFn) IGatewayServiceBuilder
	WithBlockchainPublisher(
		blockchainPublisher blockchain.IBlockchainPublisher,
	) IGatewayServiceBuilder
	WithNodeRegistry(nodeRegistry registry.NodeRegistry) IGatewayServiceBuilder
	WithLogger(logger *zap.Logger) IGatewayServiceBuilder
	WithMetricsServer(metricsServer *metrics.Server) IGatewayServiceBuilder
	WithContext(ctx context.Context) IGatewayServiceBuilder
	WithPromRegistry(promRegistry *prometheus.Registry) IGatewayServiceBuilder
	WithClientMetrics(clientMetrics *grpcprom.ClientMetrics) IGatewayServiceBuilder
	WithNonceManager(nonceManager noncemanager.NonceManager) IGatewayServiceBuilder
	Build() (GatewayService, error)
}

func NewGatewayServiceBuilder

func NewGatewayServiceBuilder(config *config.GatewayConfig) IGatewayServiceBuilder

type Identity

type Identity struct {
	Kind     IdentityKind
	Identity string
}

func GetIdentityFromContext

func GetIdentityFromContext(ctx context.Context) (Identity, bool)

func IPIdentityFn

func IPIdentityFn(ctx context.Context) (Identity, error)

func NewUserIdentity

func NewUserIdentity(userID string) Identity

type IdentityFn

type IdentityFn func(ctx context.Context) (Identity, error)

type IdentityKind

type IdentityKind string
const (
	IdentityKindIP          IdentityKind = "ip"
	IdentityKindUserDefined IdentityKind = "user"
)

type PermissionDeniedError

type PermissionDeniedError struct {
	// contains filtered or unexported fields
}

func NewPermissionDeniedError

func NewPermissionDeniedError(msg string, err error) *PermissionDeniedError

func (PermissionDeniedError) ClientMessage

func (e PermissionDeniedError) ClientMessage() string

func (PermissionDeniedError) Code

func (e PermissionDeniedError) Code() codes.Code

func (PermissionDeniedError) Error

func (e PermissionDeniedError) Error() string

type PublishRequestSummary

type PublishRequestSummary struct {
	TotalEnvelopes       int
	OffchainCostEstimate currency.PicoDollar
	OnchainCostEstimate  currency.PicoDollar
	TotalCostEstimate    currency.PicoDollar
}

type RateLimit

type RateLimit struct {
	MaxRequests int
	Window      time.Duration
}

type UnauthenticatedError

type UnauthenticatedError struct {
	// contains filtered or unexported fields
}

func NewUnauthenticatedError

func NewUnauthenticatedError(msg string, err error) *UnauthenticatedError

func (UnauthenticatedError) ClientMessage

func (e UnauthenticatedError) ClientMessage() string

func (UnauthenticatedError) Code

func (e UnauthenticatedError) Code() codes.Code

func (UnauthenticatedError) Error

func (e UnauthenticatedError) Error() string

Directories

Path Synopsis
examples
basic command
jwt command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL