ino

package module
v1.0.4 Latest Latest
Warning

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

Go to latest
Published: May 12, 2026 License: MIT Imports: 17 Imported by: 0

README

ino

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Errors

func Errors(writer http.ResponseWriter, errors []string, code int)

func IsValidMethod

func IsValidMethod(method string) bool

IsValidMethod checks whether the given HTTP method is valid.

func ParamHandler1

func ParamHandler1[T0 any](
	provider ParameterProvider[T0],
	handler func(T0, http.ResponseWriter),
) http.HandlerFunc

ParamHandler1 is a handler that takes a single parameter.

func ParamHandler2

func ParamHandler2[T0 any, T1 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	handler func(T0, T1, http.ResponseWriter),
) http.HandlerFunc

ParamHandler2 is a handler that takes two parameters.

func ParamHandler3

func ParamHandler3[T0 any, T1 any, T2 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	handler func(T0, T1, T2, http.ResponseWriter),
) http.HandlerFunc

ParamHandler3 is a handler that takes three parameters.

func ParamHandler4

func ParamHandler4[T0 any, T1 any, T2 any, T3 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	handler func(T0, T1, T2, T3, http.ResponseWriter),
) http.HandlerFunc

ParamHandler4 is a handler that takes four parameters.

func ParamHandler5

func ParamHandler5[T0 any, T1 any, T2 any, T3 any, T4 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	handler func(T0, T1, T2, T3, T4, http.ResponseWriter),
) http.HandlerFunc

ParamHandler5 is a handler that takes five parameters.

func ParamHandler6

func ParamHandler6[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	handler func(T0, T1, T2, T3, T4, T5, http.ResponseWriter),
) http.HandlerFunc

ParamHandler6 is a handler that takes six parameters.

func ParamHandler7

func ParamHandler7[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	handler func(T0, T1, T2, T3, T4, T5, T6, http.ResponseWriter),
) http.HandlerFunc

ParamHandler7 is a handler that takes seven parameters.

func ParamHandler8

func ParamHandler8[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, http.ResponseWriter),
) http.HandlerFunc

ParamHandler8 is a handler that takes eight parameters.

func ParamHandler9

func ParamHandler9[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, http.ResponseWriter),
) http.HandlerFunc

ParamHandler9 is a handler that takes nine parameters.

func ParamHandler10

func ParamHandler10[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, http.ResponseWriter),
) http.HandlerFunc

ParamHandler10 is a handler that takes ten parameters.

func ParamHandler11

func ParamHandler11[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any, T10 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	provider10 ParameterProvider[T10],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, http.ResponseWriter),
) http.HandlerFunc

ParamHandler11 is a handler that takes eleven parameters.

func ParamHandler12

func ParamHandler12[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any, T10 any, T11 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	provider10 ParameterProvider[T10],
	provider11 ParameterProvider[T11],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, http.ResponseWriter),
) http.HandlerFunc

ParamHandler12 is a handler that takes twelve parameters.

func ParamHandler13

func ParamHandler13[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any, T10 any, T11 any, T12 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	provider10 ParameterProvider[T10],
	provider11 ParameterProvider[T11],
	provider12 ParameterProvider[T12],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, http.ResponseWriter),
) http.HandlerFunc

ParamHandler13 is a handler that takes thirteen parameters.

func ParamHandler14

func ParamHandler14[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any, T10 any, T11 any, T12 any, T13 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	provider10 ParameterProvider[T10],
	provider11 ParameterProvider[T11],
	provider12 ParameterProvider[T12],
	provider13 ParameterProvider[T13],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, http.ResponseWriter),
) http.HandlerFunc

ParamHandler14 is a handler that takes fourteen parameters.

func ParamHandler15

func ParamHandler15[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any, T10 any, T11 any, T12 any, T13 any, T14 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	provider10 ParameterProvider[T10],
	provider11 ParameterProvider[T11],
	provider12 ParameterProvider[T12],
	provider13 ParameterProvider[T13],
	provider14 ParameterProvider[T14],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, http.ResponseWriter),
) http.HandlerFunc

ParamHandler15 is a handler that takes fifteen parameters.

func ParamHandler16

func ParamHandler16[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any, T10 any, T11 any, T12 any, T13 any, T14 any, T15 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	provider10 ParameterProvider[T10],
	provider11 ParameterProvider[T11],
	provider12 ParameterProvider[T12],
	provider13 ParameterProvider[T13],
	provider14 ParameterProvider[T14],
	provider15 ParameterProvider[T15],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, http.ResponseWriter),
) http.HandlerFunc

ParamHandler16 is a handler that takes sixteen parameters.

func ParamHandler17

func ParamHandler17[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any, T10 any, T11 any, T12 any, T13 any, T14 any, T15 any, T16 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	provider10 ParameterProvider[T10],
	provider11 ParameterProvider[T11],
	provider12 ParameterProvider[T12],
	provider13 ParameterProvider[T13],
	provider14 ParameterProvider[T14],
	provider15 ParameterProvider[T15],
	provider16 ParameterProvider[T16],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, http.ResponseWriter),
) http.HandlerFunc

ParamHandler17 is a handler that takes seventeen parameters.

func ParamHandler18

func ParamHandler18[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any, T10 any, T11 any, T12 any, T13 any, T14 any, T15 any, T16 any, T17 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	provider10 ParameterProvider[T10],
	provider11 ParameterProvider[T11],
	provider12 ParameterProvider[T12],
	provider13 ParameterProvider[T13],
	provider14 ParameterProvider[T14],
	provider15 ParameterProvider[T15],
	provider16 ParameterProvider[T16],
	provider17 ParameterProvider[T17],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, http.ResponseWriter),
) http.HandlerFunc

ParamHandler18 is a handler that takes eighteen parameters.

func ParamHandler19

func ParamHandler19[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any, T10 any, T11 any, T12 any, T13 any, T14 any, T15 any, T16 any, T17 any, T18 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	provider10 ParameterProvider[T10],
	provider11 ParameterProvider[T11],
	provider12 ParameterProvider[T12],
	provider13 ParameterProvider[T13],
	provider14 ParameterProvider[T14],
	provider15 ParameterProvider[T15],
	provider16 ParameterProvider[T16],
	provider17 ParameterProvider[T17],
	provider18 ParameterProvider[T18],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, http.ResponseWriter),
) http.HandlerFunc

ParamHandler19 is a handler that takes nineteen parameters.

func ParamHandler20

func ParamHandler20[T0 any, T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any, T10 any, T11 any, T12 any, T13 any, T14 any, T15 any, T16 any, T17 any, T18 any, T19 any](
	provider ParameterProvider[T0],
	provider1 ParameterProvider[T1],
	provider2 ParameterProvider[T2],
	provider3 ParameterProvider[T3],
	provider4 ParameterProvider[T4],
	provider5 ParameterProvider[T5],
	provider6 ParameterProvider[T6],
	provider7 ParameterProvider[T7],
	provider8 ParameterProvider[T8],
	provider9 ParameterProvider[T9],
	provider10 ParameterProvider[T10],
	provider11 ParameterProvider[T11],
	provider12 ParameterProvider[T12],
	provider13 ParameterProvider[T13],
	provider14 ParameterProvider[T14],
	provider15 ParameterProvider[T15],
	provider16 ParameterProvider[T16],
	provider17 ParameterProvider[T17],
	provider18 ParameterProvider[T18],
	provider19 ParameterProvider[T19],
	handler func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, http.ResponseWriter),
) http.HandlerFunc

ParamHandler20 is a handler that takes twenty parameters.

func UrlParams

func UrlParams(ctx context.Context) map[string]string

UrlParams extracts URL parameters from the request context. Returns a map of parameter names to their values for the matched route.

Types

type Middleware

type Middleware func(writer http.ResponseWriter, request *http.Request, next http.Handler)

Middleware is a function type that wraps an HTTP handler with additional behavior.

type Mux

type Mux struct {
	// contains filtered or unexported fields
}

Mux is an HTTP request multiplexer that routes requests to registered handlers based on method and path pattern.

func New

func New(routes ...Route) *Mux

New creates a new Mux with optional initial routes.

func (*Mux) Include

func (mux *Mux) Include(routes ...Route)

Include registers additional routes to the Mux.

func (*Mux) Middleware

func (mux *Mux) Middleware(middleware Middleware)

Middleware registers a middleware to be applied to all requests.

func (*Mux) NotFound

func (mux *Mux) NotFound(handler http.Handler)

NotFound sets the handler to be called when no route matches the request.

func (*Mux) Routes

func (mux *Mux) Routes() iter.Seq[Route]

Routes returns an iterator over all registered routes.

func (*Mux) ServeHTTP

func (mux *Mux) ServeHTTP(writer http.ResponseWriter, request *http.Request)

ServeHTTP implements the http.Handler interface, routing the request to the appropriate handler.

type ParameterProvider

type ParameterProvider[T any] interface {
	GetParamValue(*http.Request) (T, validate.Errors)
	Optional() ParameterProvider[T]
}

ParameterProvider is a provider that can be used to get a parameter value.

func BodyParam

func BodyParam() ParameterProvider[io.ReadCloser]

BodyParam creates a ParameterProvider that returns the raw request body as an io.ReadCloser. This gives direct access to the request body stream, useful for streaming large files, custom parsing, or when you don't want the framework to buffer the entire body.

func ContextParam added in v1.0.4

func ContextParam() ParameterProvider[context.Context]

ContextParam creates a ParameterProvider that returns the context from the HTTP request.

func CookieParam

func CookieParam[T validate.BasicTypes](name string, validators ...validate.Validator[T]) ParameterProvider[T]

CookieParam creates a ParameterProvider that extracts and validates a cookie value from an HTTP request. The cookie value is parsed into the specified type T (string, int64, or bool) and validated using the provided validators. If no validators are provided, only type parsing is performed.

func FormParam

func FormParam[T validate.BasicTypes](name string, validators ...validate.Validator[T]) ParameterProvider[T]

FormParam creates a ParameterProvider that extracts a form parameter from the HTTP request. It supports validation and can be made optional.

func HeaderParam

func HeaderParam[T validate.BasicTypes](name string, validators ...validate.Validator[T]) ParameterProvider[T]

HeaderParam creates a ParameterProvider that extracts an HTTP header from the request. The header value is retrieved using request.Header.Get(). It supports basic types like string, int, bool, etc. Optional validators can be provided to validate the header value. Use Optional() on the returned provider to make the header optional.

func JsonParam

func JsonParam[T any](validators ...validate.Validator[*T]) ParameterProvider[*T]

JsonParam creates a ParameterProvider that parses JSON from the request body into a struct. The JSON is decoded into the specified type T, and optional validators can be applied to the parsed object.

func MultipartFormParam

func MultipartFormParam(maxMemory int64) ParameterProvider[*multipart.Form]

MultipartFormParam creates a ParameterProvider that parses and returns multipart form data. The maxMemory parameter controls how much of the form data is stored in memory before spilling to temporary files on disk.

func PostFormParam added in v1.0.4

func PostFormParam[T validate.BasicTypes](name string, validators ...validate.Validator[T]) ParameterProvider[T]

PostFormParam creates a ParameterProvider that extracts a POST form parameter from the HTTP request. It supports validation and can be made optional.

func RequestParam

func RequestParam() ParameterProvider[*http.Request]

RequestParam creates a ParameterProvider that returns the entire HTTP request object. This is useful when you need access to the full request (headers, method, URL, etc.) in addition to or instead of individual parameters.

func UrlParam

func UrlParam[T validate.BasicTypes](name string, validators ...validate.Validator[T]) ParameterProvider[T]

UrlParam creates a ParameterProvider that extracts a URL parameter from the request. The parameter value is retrieved from the URL parameters stored in the request context (set by the router during route matching). It supports basic types like string, int, bool, etc. Optional validators can be provided to validate the parameter value. Use Optional() on the returned provider to make the parameter optional.

type Route

type Route interface {
	Method() string
	Pattern() string
	Handler() http.Handler
	Attrs() []any
}

Route defines the interface for an HTTP route with method, pattern, handler, and attributes.

func Connect

func Connect(pattern string, handler http.HandlerFunc, attrs ...any) Route

Connect creates a CONNECT route with the given pattern and handler.

func Delete

func Delete(pattern string, handler http.HandlerFunc, attrs ...any) Route

Delete creates a DELETE route with the given pattern and handler.

func Get

func Get(pattern string, handler http.HandlerFunc, attrs ...any) Route

Get creates a GET route with the given pattern and handler.

func Handle

func Handle(method, pattern string, handler http.Handler, attrs ...any) Route

Handle creates a route with the given HTTP method, pattern, and handler. It validates that the pattern starts with '/', the method is valid, and the handler is not nil.

func Head(pattern string, handler http.HandlerFunc, attrs ...any) Route

Head creates a HEAD route with the given pattern and handler.

func MatchedRoute

func MatchedRoute(ctx context.Context) Route

MatchedRoute retrieves the matched route from the request context. Returns the Route that was matched during request routing.

func Options

func Options(pattern string, handler http.HandlerFunc, attrs ...any) Route

Options creates an OPTIONS route with the given pattern and handler.

func Patch

func Patch(pattern string, handler http.HandlerFunc, attrs ...any) Route

Patch creates a PATCH route with the given pattern and handler.

func Post

func Post(pattern string, handler http.HandlerFunc, attrs ...any) Route

Post creates a POST route with the given pattern and handler.

func Put

func Put(pattern string, handler http.HandlerFunc, attrs ...any) Route

Put creates a PUT route with the given pattern and handler.

func Trace

func Trace(pattern string, handler http.HandlerFunc, attrs ...any) Route

Trace creates a TRACE route with the given pattern and handler.

type RoutePattern

type RoutePattern struct {
	Original   string
	Regex      *regexp.Regexp
	ParamNames []string
	Depth      int
}

RoutePattern represents a compiled route pattern with parameters

func ParseRoutePattern

func ParseRoutePattern(pattern string) (*RoutePattern, error)

ParseRoutePattern converts a route template into a regex pattern and parameter names Supported formats:

  • /users/{id}
  • /files/{name}/raw
  • /posts/{year:\d{4}}/{slug:[^/]+}
  • /api/{version}/users/{id:\d+}/profile
  • /static/{*:.*} (wildcard parameter for "at the end")

Everything outside {…} is safely regex-escaped Trailing slash is ignored at compile-time; both /path and /path/ are accepted at match-time Wildcard parameters (*) can match any characters including slashes

func (*RoutePattern) Match

func (rp *RoutePattern) Match(path string) (bool, iter.Seq2[string, string])

type StackRoutes

type StackRoutes []Route

StackRoutes is a collection of routes that can be nested and prefixed.

func PrefixRoutes

func PrefixRoutes(prefix string, options ...any) StackRoutes

PrefixRoutes groups the given routes with a common path prefix and attributes into a StackRoutes.

func Routes

func Routes(options ...any) StackRoutes

Routes groups the given routes and attributes into a StackRoutes.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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