Documentation
¶
Index ¶
- Variables
- func FindNestedMatches(nestedRouter *NestedRouter, r *http.Request) (*matcher.FindNestedMatchesResults, bool)
- func GetParam(r *http.Request, key string) string
- func GetSplatValues(r *http.Request) []string
- func GetTasksCtx(r *http.Request) *tasks.Ctx
- func InjectTasksCtxMiddleware(next http.Handler) http.Handler
- func RegisterNestedPatternWithoutHandler(router *NestedRouter, pattern string)
- func SetGlobalHTTPMiddleware(router *Router, httpMw HTTPMiddleware, opts ...*MiddlewareOptions)
- func SetGlobalNotFoundHTTPHandler(router *Router, httpHandler http.Handler)
- func SetGlobalTaskMiddleware[O any](router *Router, taskMw *TaskMiddleware[O], opts ...*MiddlewareOptions)
- func SetMethodLevelHTTPMiddleware(router *Router, method string, httpMw HTTPMiddleware, ...)
- func SetMethodLevelTaskMiddleware[O any](router *Router, method string, taskMw *TaskMiddleware[O], ...)
- func SetPatternLevelHTTPMiddleware[I any, O any](route *Route[I, O], httpMw HTTPMiddleware, opts ...*MiddlewareOptions)
- func SetPatternLevelTaskMiddleware[PI any, PO any, MWO any](route *Route[PI, PO], taskMw *TaskMiddleware[MWO], opts ...*MiddlewareOptions)
- type AnyNestedRoute
- type AnyRoute
- type HTTPMiddleware
- type MiddlewareOptions
- type NestedOptions
- type NestedReqData
- type NestedRoute
- type NestedRouter
- func (nr *NestedRouter) AllRoutes() map[string]AnyNestedRoute
- func (nr *NestedRouter) GetDynamicParamPrefixRune() rune
- func (nr *NestedRouter) GetExplicitIndexSegment() string
- func (nr *NestedRouter) GetMatcher() *matcher.Matcher
- func (nr *NestedRouter) GetSplatSegmentRune() rune
- func (nr *NestedRouter) HasTaskHandler(originalPattern string) bool
- func (nr *NestedRouter) IsRegistered(originalPattern string) bool
- type NestedTasksResult
- type NestedTasksResults
- type None
- type Options
- type Params
- type ReqData
- func (rd *ReqData[I]) AddResponseHeader(key, value string)
- func (rd *ReqData[I]) GetResponseCookies() []*http.Cookie
- func (rd *ReqData[I]) GetResponseHeader(key string) string
- func (rd *ReqData[I]) GetResponseHeaders(key string) []string
- func (rd *ReqData[I]) GetResponseLocation() string
- func (rd *ReqData[I]) GetResponseStatus() (int, string)
- func (rd *ReqData[I]) HeadEls() *headels.HeadEls
- func (rd *ReqData[I]) Input() I
- func (rd *ReqData[I]) IsResponseError() bool
- func (rd *ReqData[I]) IsResponseRedirect() bool
- func (rd *ReqData[I]) IsResponseSuccess() bool
- func (rd *ReqData[I]) Param(key string) string
- func (rd *ReqData[I]) Params() Params
- func (rd *ReqData[I]) Redirect(url string, code ...int)
- func (rd *ReqData[I]) Request() *http.Request
- func (rd *ReqData[I]) ResponseProxy() *response.Proxy
- func (rd *ReqData[I]) SetResponseCookie(cookie *http.Cookie)
- func (rd *ReqData[I]) SetResponseHeader(key, value string)
- func (rd *ReqData[I]) SetResponseStatus(status int, errorText ...string)
- func (rd *ReqData[I]) SplatValues() []string
- func (rd *ReqData[I]) TasksCtx() *tasks.Ctx
- type Route
- func RegisterHandler(router *Router, method, pattern string, httpHandler http.Handler) *Route[any, any]
- func RegisterHandlerFunc(router *Router, method, pattern string, httpHandlerFunc http.HandlerFunc) *Route[any, any]
- func RegisterTaskHandler[I any, O any](router *Router, method, pattern string, taskHandler *TaskHandler[I, O]) *Route[I, O]
- type Router
- func (rt *Router) AllRoutes() []AnyRoute
- func (rt *Router) GetDynamicParamPrefixRune() rune
- func (rt *Router) GetExplicitIndexSegment() string
- func (rt *Router) GetSplatSegmentRune() rune
- func (rt *Router) MountRoot(optionalPatternToAppend ...string) string
- func (rt *Router) RegisterHandler(method, pattern string, httpHandler http.Handler) *Route[any, any]
- func (rt *Router) RegisterHandlerFunc(method, pattern string, httpHandlerFunc http.HandlerFunc) *Route[any, any]
- func (rt *Router) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (rt *Router) SetGlobalHTTPMiddleware(httpMw HTTPMiddleware, opts ...*MiddlewareOptions)
- func (rt *Router) SetGlobalNotFoundHTTPHandler(httpHandler http.Handler)
- func (rt *Router) SetMethodLevelHTTPMiddleware(method string, httpMw HTTPMiddleware, opts ...*MiddlewareOptions)
- type TaskHandler
- type TaskHandlerFunc
- type TaskMiddleware
- type TaskMiddlewareFunc
- type TasksCtxRequirer
- type TasksCtxRequirerFunc
Constants ¶
This section is empty.
Variables ¶
var HandlerNeedsTasksCtxImplReflectType = reflectutil.ToInterfaceReflectType[TasksCtxRequirer]()
Functions ¶
func FindNestedMatches ¶
func FindNestedMatches(nestedRouter *NestedRouter, r *http.Request) (*matcher.FindNestedMatchesResults, bool)
func GetSplatValues ¶
func RegisterNestedPatternWithoutHandler ¶
func RegisterNestedPatternWithoutHandler(router *NestedRouter, pattern string)
func SetGlobalHTTPMiddleware ¶
func SetGlobalHTTPMiddleware(router *Router, httpMw HTTPMiddleware, opts ...*MiddlewareOptions)
func SetGlobalTaskMiddleware ¶
func SetGlobalTaskMiddleware[O any](router *Router, taskMw *TaskMiddleware[O], opts ...*MiddlewareOptions)
func SetMethodLevelHTTPMiddleware ¶
func SetMethodLevelHTTPMiddleware(router *Router, method string, httpMw HTTPMiddleware, opts ...*MiddlewareOptions)
func SetMethodLevelTaskMiddleware ¶
func SetMethodLevelTaskMiddleware[O any]( router *Router, method string, taskMw *TaskMiddleware[O], opts ...*MiddlewareOptions, )
func SetPatternLevelHTTPMiddleware ¶
func SetPatternLevelHTTPMiddleware[I any, O any](route *Route[I, O], httpMw HTTPMiddleware, opts ...*MiddlewareOptions)
func SetPatternLevelTaskMiddleware ¶
func SetPatternLevelTaskMiddleware[PI any, PO any, MWO any](route *Route[PI, PO], taskMw *TaskMiddleware[MWO], opts ...*MiddlewareOptions)
Types ¶
type AnyNestedRoute ¶
type AnyNestedRoute interface {
OriginalPattern() string
genericsutil.AnyZeroHelper
// contains filtered or unexported methods
}
type AnyRoute ¶
type AnyRoute interface {
OriginalPattern() string
Method() string
genericsutil.AnyZeroHelper
// contains filtered or unexported methods
}
type MiddlewareOptions ¶
type NestedOptions ¶
type NestedReqData ¶
type NestedRoute ¶
type NestedRoute[O any] struct { genericsutil.ZeroHelper[None, O] // contains filtered or unexported fields }
func RegisterNestedTaskHandler ¶
func RegisterNestedTaskHandler[O any]( router *NestedRouter, pattern string, taskHandler *TaskHandler[None, O], ) *NestedRoute[O]
func (*NestedRoute[O]) OriginalPattern ¶
func (route *NestedRoute[O]) OriginalPattern() string
type NestedRouter ¶
type NestedRouter struct {
// contains filtered or unexported fields
}
func NewNestedRouter ¶
func NewNestedRouter(opts *NestedOptions) *NestedRouter
func (*NestedRouter) AllRoutes ¶
func (nr *NestedRouter) AllRoutes() map[string]AnyNestedRoute
func (*NestedRouter) GetDynamicParamPrefixRune ¶
func (nr *NestedRouter) GetDynamicParamPrefixRune() rune
func (*NestedRouter) GetExplicitIndexSegment ¶
func (nr *NestedRouter) GetExplicitIndexSegment() string
func (*NestedRouter) GetMatcher ¶
func (nr *NestedRouter) GetMatcher() *matcher.Matcher
func (*NestedRouter) GetSplatSegmentRune ¶
func (nr *NestedRouter) GetSplatSegmentRune() rune
func (*NestedRouter) HasTaskHandler ¶
func (nr *NestedRouter) HasTaskHandler(originalPattern string) bool
func (*NestedRouter) IsRegistered ¶
func (nr *NestedRouter) IsRegistered(originalPattern string) bool
type NestedTasksResult ¶
type NestedTasksResult struct {
// contains filtered or unexported fields
}
func (*NestedTasksResult) Data ¶
func (ntr *NestedTasksResult) Data() any
func (*NestedTasksResult) Err ¶
func (ntr *NestedTasksResult) Err() error
func (*NestedTasksResult) OK ¶
func (ntr *NestedTasksResult) OK() bool
func (*NestedTasksResult) Pattern ¶
func (ntr *NestedTasksResult) Pattern() string
func (*NestedTasksResult) RanTask ¶
func (ntr *NestedTasksResult) RanTask() bool
type NestedTasksResults ¶
type NestedTasksResults struct {
Params Params
SplatValues []string
Map map[string]*NestedTasksResult
Slice []*NestedTasksResult
ResponseProxies []*response.Proxy
}
func FindNestedMatchesAndRunTasks ¶
func FindNestedMatchesAndRunTasks(nestedRouter *NestedRouter, r *http.Request) (*NestedTasksResults, bool)
func RunNestedTasks ¶
func RunNestedTasks( nestedRouter *NestedRouter, r *http.Request, findNestedMatchesResults *matcher.FindNestedMatchesResults, ) *NestedTasksResults
func (*NestedTasksResults) GetHasTaskHandler ¶
func (ntr *NestedTasksResults) GetHasTaskHandler(i int) bool
type None ¶
type None = genericsutil.None
type Options ¶
type Options struct {
// Used for mounting a router at a specific path, e.g., "/api/". If set,
// the router will strip the provided mount root from the beginning of
// incoming url paths before matching them against registered patterns.
MountRoot string
DynamicParamPrefixRune rune // Optional. Defaults to ':'.
SplatSegmentRune rune // Optional. Defaults to '*'.
// Required if using task handlers. Do validation or whatever you want here,
// and mutate the input ptr to the desired value (this is what will ultimately
// be returned by c.Input()).
ParseInput func(r *http.Request, inputPtr any) error
}
type ReqData ¶
type ReqData[I any] struct { // contains filtered or unexported fields }
func (*ReqData[I]) AddResponseHeader ¶ added in v0.83.0
AddResponseHeader appends a header value to the response proxy without replacing existing values.
func (*ReqData[I]) GetResponseCookies ¶ added in v0.83.0
GetResponseCookies returns all cookies set on the response proxy.
func (*ReqData[I]) GetResponseHeader ¶ added in v0.83.0
GetResponseHeader returns the first value for a header on the response proxy, or empty string if not set.
func (*ReqData[I]) GetResponseHeaders ¶ added in v0.83.0
GetResponseHeaders returns all values for a header on the response proxy.
func (*ReqData[I]) GetResponseLocation ¶ added in v0.83.0
GetResponseLocation returns the redirect URL from the response proxy, if a redirect has been set.
func (*ReqData[I]) GetResponseStatus ¶ added in v0.83.0
GetResponseStatus returns the status code and error text from the response proxy.
func (*ReqData[I]) HeadEls ¶ added in v0.83.0
Head creates a new HeadEls instance and registers it with the response proxy.
func (*ReqData[I]) IsResponseError ¶ added in v0.83.0
IsResponseError returns true if the response proxy status is 400 or higher.
func (*ReqData[I]) IsResponseRedirect ¶ added in v0.83.0
IsResponseRedirect returns true if a redirect has been set on the response proxy.
func (*ReqData[I]) IsResponseSuccess ¶ added in v0.83.0
IsResponseSuccess returns true if the response proxy status is in the 2xx range.
func (*ReqData[I]) Redirect ¶ added in v0.83.0
Redirect sets a redirect on the response proxy. Defaults to 302 if no code is provided.
func (*ReqData[I]) ResponseProxy ¶
func (*ReqData[I]) SetResponseCookie ¶ added in v0.83.0
SetResponseCookie adds a cookie to the response proxy.
func (*ReqData[I]) SetResponseHeader ¶ added in v0.83.0
SetResponseHeader sets a header on the response proxy, replacing any existing values for that key.
func (*ReqData[I]) SetResponseStatus ¶ added in v0.83.0
SetResponseStatus sets the status code and optional error text on the response proxy.
func (*ReqData[I]) SplatValues ¶
type Route ¶
type Route[I, O any] struct { genericsutil.ZeroHelper[I, O] // contains filtered or unexported fields }
func RegisterHandler ¶
func RegisterHandlerFunc ¶
func RegisterTaskHandler ¶
func RegisterTaskHandler[I any, O any]( router *Router, method, pattern string, taskHandler *TaskHandler[I, O], ) *Route[I, O]
TaskHandlers are used for JSON responses only, and they are intended to be particularly convenient for sending JSON. If you need to send a different content type, use a traditional http.Handler instead.
func (*Route[I, O]) OriginalPattern ¶
func (*Route[I, O]) SetPatternLevelHTTPMiddleware ¶ added in v0.83.0
func (route *Route[I, O]) SetPatternLevelHTTPMiddleware(httpMw HTTPMiddleware, opts ...*MiddlewareOptions)
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
func (*Router) GetDynamicParamPrefixRune ¶
func (*Router) GetExplicitIndexSegment ¶
func (*Router) GetSplatSegmentRune ¶
func (*Router) MountRoot ¶
Takes zero or one pattern strings. If no arguments are provided, returns the mount root, otherwise returns the mount root joined with the provided pattern. Discards any extra arguments. For example, if mux.MountRoot() were to return "/api/", then mux.MountRoot("foo") would return "/api/foo", and mux.MountRoot("foo", "bar") would still just return "/api/foo".
func (*Router) RegisterHandler ¶ added in v0.83.0
func (*Router) RegisterHandlerFunc ¶ added in v0.83.0
func (*Router) SetGlobalHTTPMiddleware ¶ added in v0.83.0
func (rt *Router) SetGlobalHTTPMiddleware(httpMw HTTPMiddleware, opts ...*MiddlewareOptions)
func (*Router) SetGlobalNotFoundHTTPHandler ¶ added in v0.83.0
func (*Router) SetMethodLevelHTTPMiddleware ¶ added in v0.83.0
func (rt *Router) SetMethodLevelHTTPMiddleware(method string, httpMw HTTPMiddleware, opts ...*MiddlewareOptions)
type TaskHandler ¶
func TaskHandlerFromFunc ¶
func TaskHandlerFromFunc[I any, O any](taskHandlerFunc TaskHandlerFunc[I, O]) *TaskHandler[I, O]
TaskHandlers are used for JSON responses only, and they are intended to be particularly convenient for sending JSON. If you need to send a different content type, use a traditional http.Handler instead.
type TaskHandlerFunc ¶
type TaskHandlerFunc[I any, O any] = genericsutil.IOFunc[*ReqData[I], O]
type TaskMiddleware ¶
func TaskMiddlewareFromFunc ¶
func TaskMiddlewareFromFunc[O any](userFunc TaskMiddlewareFunc[O]) *TaskMiddleware[O]
type TaskMiddlewareFunc ¶
type TaskMiddlewareFunc[O any] = genericsutil.IOFunc[*ReqData[None], O]
type TasksCtxRequirer ¶
type TasksCtxRequirerFunc ¶
type TasksCtxRequirerFunc func(http.ResponseWriter, *http.Request)
func (TasksCtxRequirerFunc) NeedsTasksCtx ¶
func (h TasksCtxRequirerFunc) NeedsTasksCtx()
func (TasksCtxRequirerFunc) ServeHTTP ¶
func (h TasksCtxRequirerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request)