Documentation
¶
Index ¶
- Variables
- func NewManager(resources []api.Resource, factoryParamResolver *FactoryParamResolverManager, ...) (api.Manager, error)
- type BaseError
- type CtxParamResolver
- type DbParamResolver
- type DefaultApiPolicy
- type DefaultEngine
- type DuplicateError
- type Engine
- type FactoryParamResolverManager
- type FactoryResolverFunc
- type HandlerParamResolverManager
- type LoggerParamResolver
- type NotFoundError
- type OpenApiPolicy
- type ParamResolverFunc
- type Policy
- type PrincipalParamResolver
- type ResourceDefinition
Constants ¶
This section is empty.
Variables ¶
var ( // ErrResolveHandlerParamType indicates failing to resolve handler parameter type. ErrResolveHandlerParamType = errors.New("failed to resolve api handler parameter type") // ErrResolveFactoryParamType indicates failing to resolve factory function parameter type. ErrResolveFactoryParamType = errors.New("failed to resolve factory parameter type") // ErrProvidedHandlerNil indicates provided handler is nil. ErrProvidedHandlerNil = errors.New("provided handler cannot be nil") // ErrProvidedHandlerMustFunc indicates provided handler must be a function. ErrProvidedHandlerMustFunc = errors.New("provided handler must be a function") // ErrProvidedHandlerFuncNil indicates provided handler function is nil. ErrProvidedHandlerFuncNil = errors.New("provided handler function cannot be nil") // ErrHandlerFactoryRequireDB indicates handler factory requires db. ErrHandlerFactoryRequireDB = errors.New("handler factory function requires database connection but none provided") // ErrHandlerFactoryMethodRequireDB indicates handler factory method requires db. ErrHandlerFactoryMethodRequireDB = errors.New("handler factory method requires database connection but none provided") // ErrApiMethodNotFound indicates api action method not found. ErrApiMethodNotFound = errors.New("api action method not found in resource") // ErrHandlerMethodInvalidReturn indicates handler method invalid return type. ErrHandlerMethodInvalidReturn = errors.New("handler method has invalid return type, must be 'error'") // ErrHandlerMethodTooManyReturns indicates handler method has too many returns. ErrHandlerMethodTooManyReturns = errors.New("handler method has too many return values, must have at most 1 (error) or none") // ErrHandlerFactoryInvalidReturn indicates handler factory invalid return count. ErrHandlerFactoryInvalidReturn = errors.New("handler factory method should return 1 or 2 values") )
var Module = fx.Module( "vef:api", fx.Provide( fx.Annotate( NewHandlerParamResolverManager, fx.ParamTags(`group:"vef:api:handler_param_resolvers"`), ), fx.Annotate( NewFactoryParamResolverManager, fx.ParamTags(`group:"vef:api:factory_param_resolvers"`), ), fx.Private, ), fx.Provide( fx.Annotate( NewManager, fx.ParamTags(`group:"vef:api:resources"`), fx.ResultTags(`name:"vef:api:manager"`), ), fx.Annotate( NewManager, fx.ParamTags(`group:"vef:openapi:resources"`), fx.ResultTags(`name:"vef:openapi:manager"`), ), fx.Annotate( NewDefaultApiPolicy, fx.ResultTags(`name:"vef:api:policy"`), ), fx.Annotate( NewOpenApiPolicy, fx.ResultTags(`name:"vef:openapi:policy"`), ), fx.Annotate( NewEngine, fx.ParamTags( `name:"vef:api:manager"`, `name:"vef:api:policy"`, `optional:"true"`, `optional:"true"`, ``, ``, ), fx.ResultTags(`name:"vef:api:engine"`), ), fx.Annotate( NewEngine, fx.ParamTags( `name:"vef:openapi:manager"`, `name:"vef:openapi:policy"`, `optional:"true"`, `optional:"true"`, ``, ``, ), fx.ResultTags(`name:"vef:openapi:engine"`), ), ), )
Functions ¶
func NewManager ¶
func NewManager( resources []api.Resource, factoryParamResolver *FactoryParamResolverManager, handlerParamResolver *HandlerParamResolverManager, ) (api.Manager, error)
Types ¶
type BaseError ¶ added in v0.15.0
type BaseError struct {
Identifier *api.Identifier
Err error
}
BaseError represents an error that occurred during API request processing.
type CtxParamResolver ¶
type CtxParamResolver struct{}
func (*CtxParamResolver) Type ¶
func (*CtxParamResolver) Type() reflect.Type
type DbParamResolver ¶
type DbParamResolver struct{}
func (*DbParamResolver) Type ¶
func (*DbParamResolver) Type() reflect.Type
type DefaultApiPolicy ¶ added in v0.16.0
type DefaultApiPolicy struct {
// contains filtered or unexported fields
}
func (*DefaultApiPolicy) BuildAuthenticationMiddleware ¶ added in v0.16.0
func (p *DefaultApiPolicy) BuildAuthenticationMiddleware(manager api.Manager) fiber.Handler
func (*DefaultApiPolicy) Path ¶ added in v0.16.0
func (*DefaultApiPolicy) Path() string
type DefaultEngine ¶
type DefaultEngine struct {
// contains filtered or unexported fields
}
func (*DefaultEngine) Connect ¶
func (e *DefaultEngine) Connect(router fiber.Router)
type DuplicateError ¶ added in v0.11.2
type DuplicateError struct {
BaseError
Existing *api.Definition
}
DuplicateError represents an error when attempting to register a duplicate Api definition.
func (*DuplicateError) Error ¶ added in v0.11.2
func (e *DuplicateError) Error() string
type FactoryParamResolverManager ¶ added in v0.11.0
type FactoryParamResolverManager struct {
// contains filtered or unexported fields
}
func NewFactoryParamResolverManager ¶ added in v0.11.0
func NewFactoryParamResolverManager(resolvers []api.FactoryParamResolver) *FactoryParamResolverManager
NewFactoryParamResolverManager creates a manager where user-provided resolvers override framework built-in resolvers when types overlap.
func (*FactoryParamResolverManager) Resolve ¶ added in v0.11.0
func (m *FactoryParamResolverManager) Resolve( target reflect.Value, paramType reflect.Type, ) (FactoryResolverFunc, error)
Resolve attempts exact type matching first, then falls back to field injection from target resource.
type FactoryResolverFunc ¶ added in v0.11.0
type HandlerParamResolverManager ¶
type HandlerParamResolverManager struct {
// contains filtered or unexported fields
}
HandlerParamResolverManager uses exact type matching for resolution. If needed in the future, assignable/interface matching (e.g., Implements/AssignableTo) can be added without changing the public API.
func NewHandlerParamResolverManager ¶
func NewHandlerParamResolverManager(userResolvers []api.HandlerParamResolver) *HandlerParamResolverManager
NewHandlerParamResolverManager merges preset and user-provided resolvers. User-provided resolvers override preset ones for the same type. Intended to be used by the DI layer to assemble resolvers from groups.
func (*HandlerParamResolverManager) Resolve ¶
func (m *HandlerParamResolverManager) Resolve(target reflect.Value, paramType reflect.Type) (ParamResolverFunc, error)
type LoggerParamResolver ¶
type LoggerParamResolver struct{}
func (*LoggerParamResolver) Type ¶
func (*LoggerParamResolver) Type() reflect.Type
type NotFoundError ¶ added in v0.15.0
type NotFoundError struct {
BaseError
Suggestion *api.Identifier
}
NotFoundError represents an error when an API endpoint is not found, with optional suggestion.
func (*NotFoundError) Error ¶ added in v0.15.0
func (e *NotFoundError) Error() string
type OpenApiPolicy ¶ added in v0.16.0
type OpenApiPolicy struct {
// contains filtered or unexported fields
}
func (*OpenApiPolicy) BuildAuthenticationMiddleware ¶ added in v0.16.0
func (p *OpenApiPolicy) BuildAuthenticationMiddleware(manager api.Manager) fiber.Handler
func (*OpenApiPolicy) Path ¶ added in v0.16.0
func (*OpenApiPolicy) Path() string
type Policy ¶
type Policy interface {
Path() string
BuildAuthenticationMiddleware(manager api.Manager) fiber.Handler
}
Policy encapsulates behavior differences between API kinds (e.g., /api vs /openapi).
func NewDefaultApiPolicy ¶
func NewDefaultApiPolicy(auth security.AuthManager) Policy
func NewOpenApiPolicy ¶
func NewOpenApiPolicy(auth security.AuthManager) Policy
type PrincipalParamResolver ¶
type PrincipalParamResolver struct{}
func (*PrincipalParamResolver) Type ¶
func (*PrincipalParamResolver) Type() reflect.Type
type ResourceDefinition ¶
Source Files
¶
- engine.go
- errors.go
- factory_params.go
- handler_builder.go
- handler_param_resolvers.go
- handler_params.go
- manager.go
- middleware_audit.go
- middleware_authentication.go
- middleware_authorization.go
- middleware_context.go
- middleware_data_permission.go
- middleware_rate_limiter.go
- middleware_request.go
- module.go
- policy.go
- resource_definitions.go
- resource_parser.go