interfaces

package
v1.18.3 Latest Latest
Warning

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

Go to latest
Published: Nov 13, 2024 License: Apache-2.0 Imports: 11 Imported by: 7

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ACLPermissionChecker

type ACLPermissionChecker interface {
	CheckPermission(ctx context.Context, userID string, permissionCode string) (role string, err error)
}

ACLPermissionChecker abstraction for check acl permission with given permission code

type BasicAuthValidator added in v1.13.9

type BasicAuthValidator interface {
	ValidateBasic(ctx context.Context, username, password string) error
}

BasicAuthValidator abstract interface for basic auth validator

type Broker

type Broker interface {
	GetPublisher() Publisher
	GetName() types.Worker
	Health() map[string]error
	Closer
}

Broker abstraction

type Cache

type Cache interface {
	Get(ctx context.Context, key string) ([]byte, error)
	GetKeys(ctx context.Context, pattern string) ([]string, error)
	GetTTL(ctx context.Context, key string) (time.Duration, error)
	Set(ctx context.Context, key string, value any, expire time.Duration) error
	Exists(ctx context.Context, key string) (bool, error)
	Delete(ctx context.Context, key string) error
}

Cache abstract interface

type Closer

type Closer interface {
	Disconnect(ctx context.Context) error
}

Closer abstraction

type GRPCHandler

type GRPCHandler interface {
	Register(server *grpc.Server, middlewareGroup *types.MiddlewareGroup)
}

GRPCHandler delivery factory for GRPC handler

type GRPCMiddleware

type GRPCMiddleware interface {
	GRPCBasicAuth(ctx context.Context) (context.Context, error)
	GRPCBearerAuth(ctx context.Context) (context.Context, error)
	GRPCMultipleAuth(ctx context.Context) (context.Context, error)

	// GRPCPermissionACL method.
	// This middleware required TokenValidator (GRPCBearerAuth middleware must executed before) for extract userID
	// default from `Subject` field in token claim payload
	// or you can custom extract user id with `SetUserIDExtractor` option when construct middleware in configs
	GRPCPermissionACL(permissionCode string) types.MiddlewareFunc
}

GRPCMiddleware interface, common middleware for grpc handler

type GraphQLHandler

type GraphQLHandler interface {
	Query() any
	Mutation() any
	Subscription() any
	Schema() string
}

GraphQLHandler delivery factory for GraphQL resolver handler

type GraphQLMiddleware

type GraphQLMiddleware interface {
	GraphQLAuth(ctx context.Context, directive *gqltypes.Directive, input any) (context.Context, error)

	// GraphQLPermissionACL method.
	// This middleware required TokenValidator (GraphQLAuth middleware with BEARER must executed before) for extract userID
	// default from `Subject` field in token claim payload
	// or you can custom extract user id with `SetUserIDExtractor` option when construct middleware in configs
	GraphQLPermissionACL(ctx context.Context, directive *gqltypes.Directive, input any) (context.Context, error)
}

GraphQLMiddleware interface, common middleware for graphql handler, as directive in graphql schema

type HTTPMiddleware

type HTTPMiddleware interface {
	HTTPBasicAuth(next http.Handler) http.Handler
	HTTPBearerAuth(next http.Handler) http.Handler
	HTTPMultipleAuth(next http.Handler) http.Handler
	HTTPCache(next http.Handler) http.Handler

	// HTTPPermissionACL method.
	// This middleware required TokenValidator (HTTPBearerAuth middleware must executed before) for extract userID
	// default from `Subject` field in token claim payload
	// or you can custom extract user id with `SetUserIDExtractor` option when construct middleware in configs
	HTTPPermissionACL(permissionCode string) func(http.Handler) http.Handler
}

HTTPMiddleware interface, common middleware for http handler

type Locker added in v1.14.8

type Locker interface {
	IsLocked(key string) bool
	IsLockedTTL(key string, ttl time.Duration) bool
	HasBeenLocked(key string) bool
	Unlock(key string)
	Reset(key string)
	Lock(key string, timeout time.Duration) (unlockFunc func(), err error)
	GetPrefixLocker() string
	GetTTLLocker() time.Duration
	Closer
}

Locker abstraction, lock concurrent process

type Middleware

type Middleware interface {
	Basic(ctx context.Context, authKey string) error
	Bearer(ctx context.Context, token string) (*candishared.TokenClaim, error)

	HTTPMiddleware
	GRPCMiddleware
	GraphQLMiddleware
}

Middleware abstraction

type MongoDatabase

type MongoDatabase interface {
	ReadDB() *mongo.Database
	WriteDB() *mongo.Database
	Health() map[string]error
	Closer
}

MongoDatabase abstraction

type Publisher

type Publisher interface {
	PublishMessage(ctx context.Context, args *candishared.PublisherArgument) (err error)
}

Publisher abstract interface

type RESTHandler

type RESTHandler interface {
	Mount(group RESTRouter)
}

RESTHandler delivery factory for REST handler (default using echo rest framework)

type RESTRouter added in v1.15.0

type RESTRouter interface {
	Use(middlewares ...func(http.Handler) http.Handler)
	Group(pattern string, middlewares ...func(http.Handler) http.Handler) RESTRouter
	HandleFunc(pattern string, h http.HandlerFunc, middlewares ...func(http.Handler) http.Handler)
	CONNECT(pattern string, h http.HandlerFunc, middlewares ...func(http.Handler) http.Handler)
	DELETE(pattern string, h http.HandlerFunc, middlewares ...func(http.Handler) http.Handler)
	GET(pattern string, h http.HandlerFunc, middlewares ...func(http.Handler) http.Handler)
	HEAD(pattern string, h http.HandlerFunc, middlewares ...func(http.Handler) http.Handler)
	OPTIONS(pattern string, h http.HandlerFunc, middlewares ...func(http.Handler) http.Handler)
	PATCH(pattern string, h http.HandlerFunc, middlewares ...func(http.Handler) http.Handler)
	POST(pattern string, h http.HandlerFunc, middlewares ...func(http.Handler) http.Handler)
	PUT(pattern string, h http.HandlerFunc, middlewares ...func(http.Handler) http.Handler)
	TRACE(pattern string, h http.HandlerFunc, middlewares ...func(http.Handler) http.Handler)
}

RESTRouter for REST routing abstraction

type RSAKey

type RSAKey interface {
	PrivateKey() *rsa.PrivateKey
	PublicKey() *rsa.PublicKey
}

RSAKey abstraction

type RedisPool

type RedisPool interface {
	ReadPool() *redis.Pool
	WritePool() *redis.Pool
	Health() map[string]error
	Cache() Cache
	Closer
}

RedisPool abstraction

type SQLDatabase

type SQLDatabase interface {
	ReadDB() *sql.DB
	WriteDB() *sql.DB
	Health() map[string]error
	Closer
}

SQLDatabase abstraction

type ServerHandler added in v1.6.1

type ServerHandler interface {
	MountHandlers(group any) // why interface? cause every server is different type for grouping route handler
}

ServerHandler delivery factory for all additional server handler (rest framework, p2p, and many more)

type TokenValidator

type TokenValidator interface {
	ValidateToken(ctx context.Context, token string) (*candishared.TokenClaim, error)
}

TokenValidator abstract interface for jwt validator

type Validator

type Validator interface {
	// ValidateDocument method using jsonschema with input is json source
	ValidateDocument(reference string, document any) error

	// ValidateStruct method, rules from struct tag using github.com/go-playground/validator
	ValidateStruct(data any) error
}

Validator abstract interface

type WorkerHandler

type WorkerHandler interface {
	MountHandlers(group *types.WorkerHandlerGroup)
}

WorkerHandler delivery factory for all worker handler

Jump to

Keyboard shortcuts

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