Documentation
¶
Index ¶
- type ACLPermissionChecker
- type BasicAuthValidator
- type Broker
- type Cache
- type Closer
- type GRPCHandler
- type GRPCMiddleware
- type GraphQLHandler
- type GraphQLMiddleware
- type HTTPMiddleware
- type Locker
- type Middleware
- type MongoDatabase
- type Publisher
- type RESTHandler
- type RESTRouter
- type RSAKey
- type RedisPool
- type SQLDatabase
- type ServerHandler
- type TokenValidator
- type Validator
- type WorkerHandler
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
DoCommand(ctx context.Context, isWrite bool, command string, args ...any) (reply any, err error)
}
Cache abstract interface
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 ¶
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 ¶
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