Documentation ¶
Index ¶
- Constants
- Variables
- func AsHandler(method string, path string, handler any, middlewares ...any) fx.Option
- func AsHandlersGroup(prefix string, handlersRegistrations []*HandlerRegistration, ...) fx.Option
- func AsMiddleware(middleware any, kind MiddlewareKind) fx.Option
- func GetReturnType(target any) string
- func GetType(target any) string
- func IsConcreteHandler(handler any) bool
- func IsConcreteMiddleware(middleware any) bool
- func NewFxHttpServer(p FxHttpServerParam) (*echo.Echo, error)
- func RegisterHandler(handlerRegistration *HandlerRegistration) fx.Option
- func RegisterHandlersGroup(handlersGroupRegistration *HandlersGroupRegistration) fx.Option
- func RegisterMiddleware(middlewareRegistration *MiddlewareRegistration) fx.Option
- func Sanitize(str string) string
- func Split(str string) []string
- type FxHttpServerModuleInfo
- type FxHttpServerParam
- type FxHttpServerRegistryParam
- type Handler
- type HandlerDefinition
- type HandlerRegistration
- type HandlersGroupDefinition
- type HandlersGroupRegistration
- type HttpServerRegistry
- type Middleware
- type MiddlewareDefinition
- type MiddlewareKind
- type MiddlewareRegistration
- type ResolvedHandler
- type ResolvedHandlersGroup
- type ResolvedMiddleware
Constants ¶
const ( ModuleName = "httpserver" DefaultAddress = ":8080" )
Variables ¶
var FxHttpServerModule = fx.Module( ModuleName, fx.Provide( httpserver.NewDefaultHttpServerFactory, NewFxHttpServerRegistry, NewFxHttpServer, fx.Annotate( NewFxHttpServerModuleInfo, fx.As(new(interface{})), fx.ResultTags(`group:"core-module-infos"`), ), ), )
FxHttpServerModule is the Fx httpserver module.
Functions ¶
func AsHandlersGroup ¶
func AsHandlersGroup(prefix string, handlersRegistrations []*HandlerRegistration, middlewares ...any) fx.Option
AsHandlersGroup registers a handlers group into Fx.
func AsMiddleware ¶
func AsMiddleware(middleware any, kind MiddlewareKind) fx.Option
AsMiddleware registers a middleware into Fx.
func GetReturnType ¶
GetReturnType returns the return type of a target.
func IsConcreteHandler ¶
IsConcreteHandler returns true if the handler is a concrete echo.HandlerFunc implementation.
func IsConcreteMiddleware ¶
IsConcreteMiddleware returns true if the middleware is a concrete echo.MiddlewareFunc implementation.
func NewFxHttpServer ¶
func NewFxHttpServer(p FxHttpServerParam) (*echo.Echo, error)
NewFxHttpServer returns a new echo.Echo.
func RegisterHandler ¶
func RegisterHandler(handlerRegistration *HandlerRegistration) fx.Option
RegisterHandler registers a handler registration into Fx.
func RegisterHandlersGroup ¶
func RegisterHandlersGroup(handlersGroupRegistration *HandlersGroupRegistration) fx.Option
RegisterHandlersGroup registers a handlers group registration into Fx.
func RegisterMiddleware ¶
func RegisterMiddleware(middlewareRegistration *MiddlewareRegistration) fx.Option
RegisterMiddleware registers a middleware registration into Fx.
Types ¶
type FxHttpServerModuleInfo ¶
type FxHttpServerModuleInfo struct { Address string Debug bool Logger string Binder string Serializer string Renderer string ErrorHandler string Routes []*echo.Route }
FxHttpServerModuleInfo is a module info collector for fxcore.
func NewFxHttpServerModuleInfo ¶
func NewFxHttpServerModuleInfo(httpServer *echo.Echo, cfg *config.Config) *FxHttpServerModuleInfo
NewFxHttpServerModuleInfo returns a new FxHttpServerModuleInfo.
func (*FxHttpServerModuleInfo) Data ¶
func (i *FxHttpServerModuleInfo) Data() map[string]interface{}
Data return the data of the module info.
func (*FxHttpServerModuleInfo) Name ¶
func (i *FxHttpServerModuleInfo) Name() string
Name return the name of the module info.
type FxHttpServerParam ¶
type FxHttpServerParam struct { fx.In LifeCycle fx.Lifecycle Factory httpserver.HttpServerFactory Generator uuid.UuidGenerator Registry *HttpServerRegistry Config *config.Config Logger *log.Logger TracerProvider trace.TracerProvider MetricsRegistry *prometheus.Registry }
FxHttpServerParam allows injection of the required dependencies in NewFxHttpServer.
type FxHttpServerRegistryParam ¶
type FxHttpServerRegistryParam struct { fx.In Middlewares []Middleware `group:"httpserver-middlewares"` MiddlewareDefinitions []MiddlewareDefinition `group:"httpserver-middleware-definitions"` Handlers []Handler `group:"httpserver-handlers"` HandlerDefinitions []HandlerDefinition `group:"httpserver-handler-definitions"` HandlersGroupDefinitions []HandlersGroupDefinition `group:"httpserver-handlers-group-definitions"` }
FxHttpServerRegistryParam allows injection of the required dependencies in NewFxHttpServerRegistry.
type Handler ¶
type Handler interface {
Handle() echo.HandlerFunc
}
Handler is the interface for handlers.
type HandlerDefinition ¶
type HandlerDefinition interface { Concrete() bool Method() string Path() string Handler() any Middlewares() []MiddlewareDefinition }
HandlerDefinition is the interface for handlers definitions.
func NewHandlerDefinition ¶
func NewHandlerDefinition(method string, path string, handler any, middlewares []MiddlewareDefinition) HandlerDefinition
NewHandlerDefinition returns a new HandlerDefinition.
type HandlerRegistration ¶
type HandlerRegistration struct {
// contains filtered or unexported fields
}
HandlerRegistration is a handler registration.
func NewHandlerRegistration ¶
func NewHandlerRegistration(method string, path string, handler any, middlewares ...any) *HandlerRegistration
NewHandlerRegistration returns a new HandlerRegistration.
func (*HandlerRegistration) Handler ¶
func (h *HandlerRegistration) Handler() any
Handler returns the handler.
func (*HandlerRegistration) Method ¶
func (h *HandlerRegistration) Method() string
Method returns the handler http method.
func (*HandlerRegistration) Middlewares ¶
func (h *HandlerRegistration) Middlewares() []any
Middlewares returns the handler associated middlewares.
func (*HandlerRegistration) Path ¶
func (h *HandlerRegistration) Path() string
Path returns the handler http path.
type HandlersGroupDefinition ¶
type HandlersGroupDefinition interface { Prefix() string Handlers() []HandlerDefinition Middlewares() []MiddlewareDefinition }
HandlersGroupDefinition is the interface for handlers groups definitions.
func NewHandlersGroupDefinition ¶
func NewHandlersGroupDefinition(prefix string, handlers []HandlerDefinition, middlewares []MiddlewareDefinition) HandlersGroupDefinition
NewHandlersGroupDefinition returns a new HandlersGroupDefinition.
type HandlersGroupRegistration ¶
type HandlersGroupRegistration struct {
// contains filtered or unexported fields
}
HandlersGroupRegistration is a handlers group registration.
func NewHandlersGroupRegistration ¶
func NewHandlersGroupRegistration(prefix string, handlersRegistrations []*HandlerRegistration, middlewares ...any) *HandlersGroupRegistration
NewHandlersGroupRegistration returns a new HandlersGroupRegistration.
func (*HandlersGroupRegistration) HandlersRegistrations ¶
func (h *HandlersGroupRegistration) HandlersRegistrations() []*HandlerRegistration
HandlersRegistrations returns the handlers group associated handlers registrations.
func (*HandlersGroupRegistration) Middlewares ¶
func (h *HandlersGroupRegistration) Middlewares() []any
Middlewares returns the handlers group associated middlewares.
func (*HandlersGroupRegistration) Prefix ¶
func (h *HandlersGroupRegistration) Prefix() string
Prefix returns the handlers group http path prefix.
type HttpServerRegistry ¶
type HttpServerRegistry struct {
// contains filtered or unexported fields
}
HttpServerRegistry is the registry collecting middlewares, handlers, handlers groups and their definitions.
func NewFxHttpServerRegistry ¶
func NewFxHttpServerRegistry(p FxHttpServerRegistryParam) *HttpServerRegistry
NewFxHttpServerRegistry returns as new HttpServerRegistry.
func (*HttpServerRegistry) ResolveHandlers ¶
func (r *HttpServerRegistry) ResolveHandlers() ([]ResolvedHandler, error)
ResolveHandlers resolves a list of ResolvedHandler from their definitions.
func (*HttpServerRegistry) ResolveHandlersGroups ¶
func (r *HttpServerRegistry) ResolveHandlersGroups() ([]ResolvedHandlersGroup, error)
ResolveHandlersGroups resolves a list of ResolvedHandlersGroup from their definitions.
func (*HttpServerRegistry) ResolveMiddlewares ¶
func (r *HttpServerRegistry) ResolveMiddlewares() ([]ResolvedMiddleware, error)
ResolveMiddlewares resolves a list of ResolvedMiddleware from their definitions.
type Middleware ¶
type Middleware interface {
Handle() echo.MiddlewareFunc
}
Middleware is the interface for middlewares.
type MiddlewareDefinition ¶
type MiddlewareDefinition interface { Concrete() bool Middleware() any Kind() MiddlewareKind }
MiddlewareDefinition is the interface for middlewares definitions.
func NewMiddlewareDefinition ¶
func NewMiddlewareDefinition(middleware any, kind MiddlewareKind) MiddlewareDefinition
NewMiddlewareDefinition returns a new MiddlewareDefinition.
type MiddlewareKind ¶
type MiddlewareKind int
MiddlewareKind is an enum for the middleware kinds (global, pre, post).
const ( GlobalUse MiddlewareKind = iota GlobalPre Attached )
func (MiddlewareKind) String ¶
func (k MiddlewareKind) String() string
String returns a string representation of a MiddlewareKind.
type MiddlewareRegistration ¶
type MiddlewareRegistration struct {
// contains filtered or unexported fields
}
MiddlewareRegistration is a middleware registration.
func NewMiddlewareRegistration ¶
func NewMiddlewareRegistration(middleware any, kind MiddlewareKind) *MiddlewareRegistration
NewMiddlewareRegistration returns a new MiddlewareRegistration.
func (*MiddlewareRegistration) Kind ¶
func (m *MiddlewareRegistration) Kind() MiddlewareKind
Kind returns the middleware kind.
func (*MiddlewareRegistration) Middleware ¶
func (m *MiddlewareRegistration) Middleware() any
Middleware returns the middleware.
type ResolvedHandler ¶
type ResolvedHandler interface { Method() string Path() string Handler() echo.HandlerFunc Middlewares() []echo.MiddlewareFunc }
ResolvedHandler is an interface for the resolved handlers.
func NewResolvedHandler ¶
func NewResolvedHandler(method string, path string, handler echo.HandlerFunc, middlewares ...echo.MiddlewareFunc) ResolvedHandler
NewResolvedHandler returns a new ResolvedHandler.
type ResolvedHandlersGroup ¶
type ResolvedHandlersGroup interface { Prefix() string Handlers() []ResolvedHandler Middlewares() []echo.MiddlewareFunc }
ResolvedHandlersGroup is an interface for the resolved handlers groups.
func NewResolvedHandlersGroup ¶
func NewResolvedHandlersGroup(prefix string, handlers []ResolvedHandler, middlewares ...echo.MiddlewareFunc) ResolvedHandlersGroup
NewResolvedHandlersGroup returns a new ResolvedHandlersGroup.
type ResolvedMiddleware ¶
type ResolvedMiddleware interface { Middleware() echo.MiddlewareFunc Kind() MiddlewareKind }
ResolvedMiddleware is an interface for the resolved middlewares.
func NewResolvedMiddleware ¶
func NewResolvedMiddleware(middleware echo.MiddlewareFunc, kind MiddlewareKind) ResolvedMiddleware
NewResolvedMiddleware returns a new ResolvedMiddleware.