api

package
v0.16.2 Latest Latest
Warning

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

Go to latest
Published: Dec 31, 2025 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
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")
)
View Source
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.

func (*BaseError) Error added in v0.15.0

func (e *BaseError) Error() string

func (*BaseError) Unwrap added in v0.15.0

func (e *BaseError) Unwrap() error

Unwrap returns the underlying error, allowing errors.As and errors.Is to work correctly.

type CtxParamResolver

type CtxParamResolver struct{}

func (*CtxParamResolver) Resolve

func (*CtxParamResolver) Resolve(ctx fiber.Ctx) (reflect.Value, error)

func (*CtxParamResolver) Type

func (*CtxParamResolver) Type() reflect.Type

type DbParamResolver

type DbParamResolver struct{}

func (*DbParamResolver) Resolve

func (*DbParamResolver) Resolve(ctx fiber.Ctx) (reflect.Value, error)

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 Engine

type Engine interface {
	Connect(router fiber.Router)
}

func NewEngine

func NewEngine(
	manager api.Manager,
	policy Policy,
	checker security.PermissionChecker,
	resolver security.DataPermissionResolver,
	db orm.Db,
	publisher event.Publisher,
) Engine

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 FactoryResolverFunc func() reflect.Value

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) Resolve

func (*LoggerParamResolver) Resolve(ctx fiber.Ctx) (reflect.Value, error)

func (*LoggerParamResolver) 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 ParamResolverFunc

type ParamResolverFunc func(ctx fiber.Ctx) (reflect.Value, error)

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) Resolve

func (*PrincipalParamResolver) Type

type ResourceDefinition

type ResourceDefinition interface {
	Register(manager api.Manager) error
}

Jump to

Keyboard shortcuts

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