gateway

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2026 License: MIT Imports: 33 Imported by: 0

Documentation

Overview

Package gateway implements the gateway service.

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 AuthorizationTokenFromContext added in v1.0.0

func AuthorizationTokenFromContext(ctx context.Context) string

func AuthorizationTokenFromHeader added in v1.0.0

func AuthorizationTokenFromHeader(headers http.Header) string

func ClientIPFromContext

func ClientIPFromContext(ctx context.Context) string

func ClientIPFromHeaderOrPeer added in v1.0.0

func ClientIPFromHeaderOrPeer(headers http.Header, peer string) string

func LoadConfigFromEnv

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

func MustCreateLogger added in v1.0.0

func MustCreateLogger(cfg *config.GatewayConfig) *zap.Logger

func MustLoadConfig

func MustLoadConfig() *config.GatewayConfig

func MustSetupRedisClient added in v1.0.0

func MustSetupRedisClient(ctx context.Context, cfg config.RedisOptions) redis.UniversalClient

func SetupRedisClient

func SetupRedisClient(
	ctx context.Context,
	cfg config.RedisOptions,
) (redis.UniversalClient, error)

Types

type AuthorizePublishFn

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

type GatewayInterceptor

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

GatewayInterceptor is the server-side interceptor for the gateway API.

func NewGatewayInterceptor

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

func (*GatewayInterceptor) WrapStreamingClient added in v1.0.0

WrapStreamingClient is a no-op. Interface requirement.

func (*GatewayInterceptor) WrapStreamingHandler added in v1.0.0

func (*GatewayInterceptor) WrapUnary added in v1.0.0

type GatewayService

type GatewayService interface {
	WaitForShutdown(timeout time.Duration)
}

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

func (*GatewayServiceBuilder) WithRedisClient added in v1.0.0

func (b *GatewayServiceBuilder) WithRedisClient(
	redisClient redis.UniversalClient,
) IGatewayServiceBuilder

func (*GatewayServiceBuilder) WithReflection added in v1.0.0

func (b *GatewayServiceBuilder) WithReflection(enabled bool) IGatewayServiceBuilder

type GatewayServiceError

type GatewayServiceError interface {
	error
	Code() connect.Code
	ClientMessage() string
	RetryAfter() *time.Duration
}

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
	WithRedisClient(redisClient redis.UniversalClient) 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(headers http.Header, peer string) (Identity, error)

func IdentityFromContext added in v1.0.0

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

func NewUserIdentity

func NewUserIdentity(userID string) Identity

type IdentityFn

type IdentityFn func(headers http.Header, peer string) (Identity, error)

type IdentityKind

type IdentityKind string

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 (PermissionDeniedError) Error

func (e PermissionDeniedError) Error() string

func (PermissionDeniedError) RetryAfter added in v1.0.0

func (e PermissionDeniedError) RetryAfter() *time.Duration

type PublishRequestSummary

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

type RateLimitExceededError added in v1.0.0

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

func NewRateLimitExceededError added in v1.0.0

func NewRateLimitExceededError(err error, retryAfter time.Duration) *RateLimitExceededError

func (RateLimitExceededError) ClientMessage added in v1.0.0

func (e RateLimitExceededError) ClientMessage() string

func (RateLimitExceededError) Code added in v1.0.0

func (RateLimitExceededError) Error added in v1.0.0

func (e RateLimitExceededError) Error() string

func (RateLimitExceededError) RetryAfter added in v1.0.0

func (e RateLimitExceededError) RetryAfter() *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 (UnauthenticatedError) Error

func (e UnauthenticatedError) Error() string

func (UnauthenticatedError) RetryAfter added in v1.0.0

func (e UnauthenticatedError) RetryAfter() *time.Duration

Directories

Path Synopsis
examples
basic command
jwt command
rateLimiter command

Jump to

Keyboard shortcuts

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