Documentation
¶
Index ¶
- Constants
- func CSRF(ctx context.Context) string
- func LoadAssetManifest(root fs.FS) asset.Manifest
- func Params(ctx context.Context) map[string]string
- func RecoverEndpointPanic(writer http.ResponseWriter, request *http.Request, value any)
- func RecoverSSRRoutePanic(writer http.ResponseWriter, request *http.Request, value any)
- func Request(ctx context.Context) (*http.Request, bool)
- func SPACandidates(requestPath string) []string
- func Session(ctx context.Context) any
- func TypedParams(ctx context.Context) map[string]any
- func WithCSRF(ctx context.Context, token string) context.Context
- func WithEndpoint(ctx context.Context, endpoint EndpointMetadata) context.Context
- func WithParams(ctx context.Context, params map[string]string) context.Context
- func WithRequest(ctx context.Context, request *http.Request) context.Context
- func WithRoute(ctx context.Context, route RouteMetadata) context.Context
- func WithSession(ctx context.Context, session any) context.Context
- func WithTypedParams(ctx context.Context, params map[string]any) context.Context
- func WriteErrorPage(writer http.ResponseWriter, request *http.Request, status int, message string)
- type BackendHandler
- func APIHandler(handler func(context.Context, *http.Request) (response.Response, error)) BackendHandler
- func Action0(handler func(context.Context) (response.Response, error)) BackendHandler
- func ActionForm[T any](decode func(form.Values) (T, error), ...) BackendHandler
- func ActionFormPtr[T any](decode func(form.Values) (T, error), ...) BackendHandler
- func ActionValues(handler func(context.Context, form.Values) (response.Response, error)) BackendHandler
- func BackendBoundary(kind string, handler BackendHandler) BackendHandler
- func NotImplemented(message string) BackendHandler
- type BackendRoute
- type BackendRouter
- func (router *BackendRouter) API(method string, routePath string, handler BackendHandler) error
- func (router *BackendRouter) Action(routePath string, handler BackendHandler) error
- func (router *BackendRouter) Dispatch(writer http.ResponseWriter, request *http.Request) bool
- func (router *BackendRouter) Handle(method string, routePath string, handler BackendHandler) error
- func (router *BackendRouter) HandlerFunc() HandlerFunc
- func (router *BackendRouter) ServeHTTP(writer http.ResponseWriter, request *http.Request)
- type CSRFTokenSource
- type EndpointMetadata
- type ErrorPage
- type ErrorPages
- type Handler
- type HandlerFunc
- type Identity
- type Metrics
- type MetricsSnapshot
- type RouteMetadata
- type RouteParamMetadata
Constants ¶
const DefaultActionBodyLimit int64 = 1 << 20
DefaultActionBodyLimit is the generated action request body limit.
Variables ¶
This section is empty.
Functions ¶
func LoadAssetManifest ¶
LoadAssetManifest reads gowdk-assets.json from generated app output.
func Params ¶ added in v0.1.5
Params returns a copy of route params attached by generated runtime adapters.
func RecoverEndpointPanic ¶ added in v0.1.5
func RecoverEndpointPanic(writer http.ResponseWriter, request *http.Request, value any)
RecoverEndpointPanic writes a no-store endpoint error page for a recovered generated action or API panic when the response has not started yet.
func RecoverSSRRoutePanic ¶ added in v0.1.5
func RecoverSSRRoutePanic(writer http.ResponseWriter, request *http.Request, value any)
RecoverSSRRoutePanic writes a no-store SSR route error page for a recovered generated route panic when the response has not started yet.
func Request ¶ added in v0.1.5
Request returns the HTTP request attached by generated runtime adapters.
func SPACandidates ¶ added in v0.1.5
func Session ¶ added in v0.1.5
Session returns application session state attached to a request context.
func TypedParams ¶ added in v0.1.5
TypedParams returns decoded route params attached by generated runtime adapters. Untyped route params are still available as strings.
func WithEndpoint ¶ added in v0.1.5
func WithEndpoint(ctx context.Context, endpoint EndpointMetadata) context.Context
WithEndpoint stores generated endpoint metadata in a context.
func WithParams ¶ added in v0.1.5
WithParams stores route params in a context.
func WithRequest ¶ added in v0.1.5
WithRequest stores the current HTTP request in a context for generated backend handlers.
func WithRoute ¶ added in v0.1.5
func WithRoute(ctx context.Context, route RouteMetadata) context.Context
WithRoute stores generated route metadata in a context.
func WithSession ¶ added in v0.1.5
WithSession stores application session state in a context.
func WithTypedParams ¶ added in v0.1.5
WithTypedParams stores decoded route params in a context.
func WriteErrorPage ¶ added in v0.1.5
WriteErrorPage writes a no-store generated HTML error page when available, otherwise it falls back to http.Error.
Types ¶
type BackendHandler ¶ added in v0.1.5
type BackendHandler func(http.ResponseWriter, *http.Request) bool
BackendHandler handles one generated backend route and reports whether it wrote a response.
func APIHandler ¶ added in v0.1.5
func APIHandler(handler func(context.Context, *http.Request) (response.Response, error)) BackendHandler
APIHandler adapts an API handler.
func ActionForm ¶ added in v0.1.5
func ActionForm[T any](decode func(form.Values) (T, error), handler func(context.Context, T) (response.Response, error)) BackendHandler
ActionForm adapts a typed value action handler with an explicit decoder.
func ActionFormPtr ¶ added in v0.1.5
func ActionFormPtr[T any](decode func(form.Values) (T, error), handler func(context.Context, *T) (response.Response, error)) BackendHandler
ActionFormPtr adapts a typed pointer action handler with an explicit decoder.
func ActionValues ¶ added in v0.1.5
func ActionValues(handler func(context.Context, form.Values) (response.Response, error)) BackendHandler
ActionValues adapts a low-level form.Values action handler.
func BackendBoundary ¶ added in v0.1.5
func BackendBoundary(kind string, handler BackendHandler) BackendHandler
BackendBoundary wraps a generated backend route handler.
func NotImplemented ¶ added in v0.1.5
func NotImplemented(message string) BackendHandler
NotImplemented returns a generated 501 backend handler.
type BackendRoute ¶ added in v0.1.5
type BackendRoute struct {
Method string
Path string
Kind string
Handler BackendHandler
}
BackendRoute describes one generated action or API route.
type BackendRouter ¶ added in v0.1.5
type BackendRouter struct {
// contains filtered or unexported fields
}
BackendRouter dispatches exact generated backend routes.
func NewBackendRouter ¶ added in v0.1.5
func NewBackendRouter(routes ...BackendRoute) (*BackendRouter, error)
NewBackendRouter creates a backend router and registers the supplied routes.
func (*BackendRouter) API ¶ added in v0.1.5
func (router *BackendRouter) API(method string, routePath string, handler BackendHandler) error
API registers a generated API route.
func (*BackendRouter) Action ¶ added in v0.1.5
func (router *BackendRouter) Action(routePath string, handler BackendHandler) error
Action registers a generated POST action route.
func (*BackendRouter) Dispatch ¶ added in v0.1.5
func (router *BackendRouter) Dispatch(writer http.ResponseWriter, request *http.Request) bool
Dispatch writes a route response when the request matches a backend route.
func (*BackendRouter) Handle ¶ added in v0.1.5
func (router *BackendRouter) Handle(method string, routePath string, handler BackendHandler) error
Handle registers a backend route with a normalized method and path.
func (*BackendRouter) HandlerFunc ¶ added in v0.1.5
func (router *BackendRouter) HandlerFunc() HandlerFunc
HandlerFunc returns the router as a generated runtime hook.
func (*BackendRouter) ServeHTTP ¶ added in v0.1.5
func (router *BackendRouter) ServeHTTP(writer http.ResponseWriter, request *http.Request)
ServeHTTP serves the backend router directly.
type CSRFTokenSource ¶ added in v0.1.5
type CSRFTokenSource interface {
Token(http.ResponseWriter) (string, error)
FieldName() string
}
CSRFTokenSource generates tokens for generated action forms.
type EndpointMetadata ¶ added in v0.1.5
type EndpointMetadata struct {
Kind string
PageID string
Name string
Method string
Path string
ErrorPage string
}
EndpointMetadata describes one generated backend endpoint declaration.
type ErrorPage ¶ added in v0.1.5
type ErrorPage struct {
Path string
}
ErrorPage describes one additional generated HTML error document to load.
type ErrorPages ¶ added in v0.1.5
ErrorPages stores optional generated HTML error documents.
func LoadErrorPages ¶ added in v0.1.5
func LoadErrorPages(root fs.FS) ErrorPages
LoadErrorPages reads optional 404.html and 500.html files from generated output.
func LoadErrorPagesWith ¶ added in v0.1.5
func LoadErrorPagesWith(root fs.FS, custom ...ErrorPage) ErrorPages
LoadErrorPagesWith reads default error pages plus extra generated error documents selected by generated route metadata.
type Handler ¶
type Handler struct {
Root fs.FS
Identity Identity
Assets asset.Manifest
Backend HandlerFunc
Action HandlerFunc
API HandlerFunc
CSRF CSRFTokenSource
ErrorPages ErrorPages
Metrics *Metrics
SSRExact HandlerFunc
SSRDynamic HandlerFunc
}
Handler serves embedded generated output plus optional action and SSR hooks.
type HandlerFunc ¶
type HandlerFunc func(http.ResponseWriter, *http.Request) bool
HandlerFunc handles a generated request-time route and reports whether it wrote a response.
func Boundary ¶ added in v0.1.5
func Boundary(kind string, handler HandlerFunc) HandlerFunc
Boundary wraps a generated request-time handler with a conservative panic boundary.
type Identity ¶
Identity describes one running generated app instance.
func InstanceIdentity ¶
func InstanceIdentity() Identity
InstanceIdentity reads GOWDK identity settings from the environment.
type Metrics ¶ added in v0.1.5
type Metrics struct {
// contains filtered or unexported fields
}
Metrics records dependency-free runtime counters for a generated app handler.
func (*Metrics) Snapshot ¶ added in v0.1.5
func (metrics *Metrics) Snapshot() MetricsSnapshot
Snapshot returns a point-in-time copy of all counters.
type MetricsSnapshot ¶ added in v0.1.5
type MetricsSnapshot struct {
Requests uint64 `json:"requests"`
Health uint64 `json:"health"`
CookieAck uint64 `json:"cookieAck"`
Backend uint64 `json:"backend"`
API uint64 `json:"api"`
Action uint64 `json:"action"`
SSRExact uint64 `json:"ssrExact"`
SSRDynamic uint64 `json:"ssrDynamic"`
Static uint64 `json:"static"`
MethodNotAllow uint64 `json:"methodNotAllow"`
NotFound uint64 `json:"notFound"`
}
MetricsSnapshot is a stable point-in-time copy of runtime counters.
type RouteMetadata ¶ added in v0.1.5
type RouteMetadata struct {
Kind string
PageID string
Method string
Path string
Render string
Cache string
ErrorPage string
DynamicParams []string
RouteParams []RouteParamMetadata
Guards []string
HasLoad bool
}
RouteMetadata describes one generated request-time page route.
type RouteParamMetadata ¶ added in v0.1.5
RouteParamMetadata describes a generated dynamic route parameter.