Documentation
¶
Index ¶
- Constants
- Variables
- func GenerateJwtToken(secret []byte, claims jwt.MapClaims, ttl time.Duration) (string, error)
- func RealIP(r *http.Request) string
- func ValidateAddr(addr string) bool
- type BasicAuthMiddleware
- type BodyLimit
- type Context
- func (c *Context) AbortWithError(code int, err error) error
- func (c *Context) Accept() []string
- func (c *Context) AcceptLanguage() []string
- func (c *Context) B(v any) error
- func (c *Context) BadRequestError(message string)
- func (c *Context) Bind(out any) error
- func (c *Context) BindForm(v any) error
- func (c *Context) BindJSON(v any) error
- func (c *Context) BindMultipart(out any) error
- func (c *Context) BindProtoBuf(v proto.Message) error
- func (c *Context) BindQuery(v any) error
- func (c *Context) BindXML(v any) error
- func (c *Context) BindYAML(v any) error
- func (c *Context) ContentType() string
- func (c *Context) Cookie(name string) (string, error)
- func (c *Context) Copy() *Context
- func (c *Context) Data(code int, contentType string, data []byte) error
- func (c *Context) Error(code int, message string) error
- func (c *Context) Form(key string) string
- func (c *Context) FormFile(key string) (*multipart.FileHeader, error)
- func (c *Context) FormValue(key string) string
- func (c *Context) Get(key string) (any, bool)
- func (c *Context) GetBool(key string) bool
- func (c *Context) GetInt(key string) int
- func (c *Context) GetInt64(key string) int64
- func (c *Context) GetString(key string) string
- func (c *Context) GetTime(key string) (time.Time, bool)
- func (c *Context) HTML(code int, file string, data any) error
- func (c *Context) HTMLView(code int, templateStr string, data any) error
- func (c *Context) Header(key string) string
- func (c *Context) Headers() map[string][]string
- func (c *Context) InternalServerError(message string)
- func (c *Context) IsSSE() bool
- func (c *Context) IsWebSocketUpgrade() bool
- func (c *Context) JSON(code int, v any) error
- func (c *Context) NotFoundError(message string)
- func (c *Context) Param(key string) string
- func (c *Context) Query(key string) string
- func (c *Context) QueryMap() map[string]string
- func (c *Context) RealIP() string
- func (c *Context) Redirect(code int, location string)
- func (c *Context) Referer() string
- func (c *Context) Render(code int, name string, data interface{}) error
- func (c *Context) ServeFile(path string)
- func (c *Context) ServeFileAttachment(path, filename string)
- func (c *Context) ServeFileFromFS(filepath string, fs http.FileSystem)
- func (c *Context) ServeFileInline(path, filename string)
- func (c *Context) Set(key string, value any)
- func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)
- func (c *Context) SetHeader(key, value string)
- func (c *Context) ShouldBind(v any) (bool, error)
- func (c *Context) String(code int, data any) error
- func (c *Context) Text(code int, v any) error
- func (c *Context) WriteStatus(code int)
- func (c *Context) XML(code int, v any) error
- func (c *Context) YAML(code int, data any) error
- type Group
- func (g *Group) BasePath() string
- func (g *Group) Delete(path string, h HandleFunc) *Route
- func (g *Group) Get(path string, h HandleFunc) *Route
- func (g *Group) Group(path string, middlewares ...Middleware) *Group
- func (g *Group) Head(path string, h HandleFunc) *Route
- func (g *Group) Okapi() *Okapi
- func (g *Group) Options(path string, h HandleFunc) *Route
- func (g *Group) Patch(path string, h HandleFunc) *Route
- func (g *Group) Post(path string, h HandleFunc) *Route
- func (g *Group) Put(path string, h HandleFunc) *Route
- func (g *Group) SetBasePath(basePath string)
- func (g *Group) Trace(path string, h HandleFunc) *Route
- func (g *Group) Use(m Middleware)
- type HandleFunc
- type JWTAuth
- type Logger
- type M
- type Message
- type Middleware
- type Okapi
- func (o *Okapi) Any(path string, h HandleFunc) *Route
- func (o *Okapi) Connect(path string, h HandleFunc) *Route
- func (o *Okapi) Delete(path string, h HandleFunc) *Route
- func (o *Okapi) Get(path string, h HandleFunc) *Route
- func (o *Okapi) GetContext() *Context
- func (o *Okapi) Group(path string, middlewares ...Middleware) *Group
- func (o *Okapi) HandleFunc(method, path string, h HandleFunc)
- func (o *Okapi) Head(path string, h HandleFunc) *Route
- func (o *Okapi) Middlewares() []Middleware
- func (o *Okapi) Next(h HandleFunc) HandleFunc
- func (o *Okapi) Options(path string, h HandleFunc) *Route
- func (o *Okapi) Patch(path string, h HandleFunc) *Route
- func (o *Okapi) Post(path string, h HandleFunc) *Route
- func (o *Okapi) Put(path string, h HandleFunc) *Route
- func (o *Okapi) Routes() []Route
- func (o *Okapi) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (o *Okapi) SetContext(ctx *Context)
- func (o *Okapi) Shutdown(server *http.Server) error
- func (o *Okapi) Start() error
- func (o *Okapi) StartServer(server *http.Server) error
- func (o *Okapi) Static(prefix string, dir string)
- func (o *Okapi) StaticFS(prefix string, fs http.FileSystem)
- func (o *Okapi) StaticFile(path string, filepath string)
- func (o *Okapi) Stop()
- func (o *Okapi) Trace(path string, h HandleFunc) *Route
- func (o *Okapi) Use(middlewares ...Middleware)
- func (o *Okapi) With(options ...OptionFunc) *Okapi
- type OptionFunc
- func WithAccessLogDisabled() OptionFunc
- func WithAddr(addr string) OptionFunc
- func WithDebug() OptionFunc
- func WithLogger(logger *slog.Logger) OptionFunc
- func WithMux(mux *mux.Router) OptionFunc
- func WithPort(port int) OptionFunc
- func WithServer(server *http.Server) OptionFunc
- func WithStrictSlash(strict bool) OptionFunc
- func WithTLSServer(server *http.Server) OptionFunc
- type Param
- type Params
- type Renderer
- type RendererFunc
- type Response
- type Route
- type Router
- type Send
- type ValidateFunc
- type Validator
Constants ¶
const ( ContentTypeHeader = "Content-Type" AcceptHeader = "Accept" LocationHeader = "Location" FrameworkName = "Okapi" TRUE = "true" )
const ( StatusNotFound = http.StatusNotFound StatusBadRequest = http.StatusBadRequest StatusForbidden = http.StatusForbidden StatusInternalServerError = http.StatusInternalServerError )
Constants for HTTP Status Codes
const ( DELETE = http.MethodDelete GET = http.MethodGet HEAD = http.MethodHead OPTIONS = http.MethodOptions POST = http.MethodPost PUT = http.MethodPut PATCH = http.MethodPatch CONNECT = http.MethodConnect TRACE = http.MethodTrace )
HTTP methods
const ( JSON = "application/json" XML = "application/xml" HTML = "text/html" FORM = "application/x-www-form-urlencoded" FormData = "multipart/form-data" PLAIN = "text/plain" PLAINTEXT = "text/plain" CSV = "text/csv" JAVASCRIPT = "application/javascript" YAML = "application/yaml" YamlX = "application/x-yaml" YamlText = "text/yaml" PROTOBUF = "application/protobuf" FormURLEncoded = "application/x-www-form-urlencoded" )
Mime types
Variables ¶
var ( ErrNotFound = errors.New("not found") ErrFailedToParseMultiPart = errors.New("failed to parse multipart data") ErrInvalidMultiPartData = errors.New("invalid multipart data") )
Constants for Error Handling
var ( DefaultWriter io.Writer = os.Stdout DefaultErrorWriter io.Writer = os.Stderr DefaultPort int = 8080 DefaultAddr string = ":8080" )
var (
ErrNoRenderer = errors.New("no renderer set for context")
)
Functions ¶
func GenerateJwtToken ¶
GenerateJwtToken generates a JWT with custom claims and expiry
func ValidateAddr ¶
ValidateAddr checks if the entrypoint address is valid. A valid entrypoint address should be in the format ":<port>" or "<IP>:<port>", where <IP> is a valid IP address and <port> is a valid port number (1-65535).
Types ¶
type BasicAuthMiddleware ¶
BasicAuthMiddleware provides basic authentication for routes.
func (*BasicAuthMiddleware) Middleware ¶
func (b *BasicAuthMiddleware) Middleware(next HandleFunc) HandleFunc
Middleware is a basic authentication middleware that checks the request's Basic Auth credentials.
type BodyLimit ¶
type BodyLimit struct {
MaxBytes int64
}
BodyLimit is a middleware that limits the size of the request body.
func (BodyLimit) Middleware ¶
func (b BodyLimit) Middleware(next HandleFunc) HandleFunc
Middleware is a middleware that limits the size of the request body to prevent excessive memory usage.
type Context ¶
type Context struct {
http.Handler
// Request is the http.Request object
Request *http.Request
// Response http.ResponseWriter
Response Response
// CtxData is a key/value store for storing data in the context
CtxData map[string]any
MaxMultipartMemory int64 // Maximum memory for multipart forms
// contains filtered or unexported fields
}
func (*Context) AbortWithError ¶
AbortWithError writes an error response with the given status code. Returns the error for chaining.
func (*Context) AcceptLanguage ¶
AcceptLanguage returns the Accept-Language header values as a slice. Trims whitespace from each language tag.
func (*Context) BadRequestError ¶
BadRequestError writes a 400 Bad Request response.
func (*Context) Bind ¶
Bind binds the request data to the provided struct based on the content type and tags.
func (*Context) BindMultipart ¶
func (*Context) ContentType ¶
ContentType returns the Content-Type header value.
func (*Context) Cookie ¶
Cookie retrieves a cookie value by name. Returns empty string and error if cookie not found.
func (*Context) Copy ¶
Copy creates a shallow copy of the context with a new data map. Maintains thread safety during the copy operation.
func (*Context) FormFile ¶
func (c *Context) FormFile(key string) (*multipart.FileHeader, error)
FormFile retrieves a file from multipart form data. Returns the file and any error encountered.
func (*Context) Get ¶
Get retrieves a value from the context's data store with thread-safe access. Returns the value and a boolean indicating if the key exists.
func (*Context) GetBool ¶
GetBool retrieves a boolean value from the context. Returns false if key doesn't exist or value isn't a bool.
func (*Context) GetInt ¶
GetInt retrieves an integer value from the context. Returns 0 if key doesn't exist or value isn't an int.
func (*Context) GetInt64 ¶
GetInt64 retrieves an int64 value from the context. Returns 0 if key doesn't exist or value isn't an int64.
func (*Context) GetString ¶
GetString retrieves a string value from the context. Returns empty string if key doesn't exist or value isn't a string.
func (*Context) HTMLView ¶
HTMLView renders an HTML template from a string with the given status code.
func (*Context) InternalServerError ¶
InternalServerError writes a 500 Internal Server Error response.
func (*Context) IsWebSocketUpgrade ¶
IsWebSocketUpgrade checks if the request is a WebSocket upgrade request.
func (*Context) NotFoundError ¶
NotFoundError writes a 404 Not Found response.
func (*Context) Query ¶
Query retrieves a URL query parameter value. Returns empty string if parameter doesn't exist.
func (*Context) QueryMap ¶
QueryMap returns all query parameters as a map. Only includes the first value for each parameter.
func (*Context) ServeFileAttachment ¶
ServeFileAttachment serves a file as an attachment (download).
func (*Context) ServeFileFromFS ¶
func (c *Context) ServeFileFromFS(filepath string, fs http.FileSystem)
ServeFileFromFS serves a file from a custom http.FileSystem.
func (*Context) ServeFileInline ¶
ServeFileInline serves a file to be displayed inline in the browser.
func (*Context) Set ¶
Set stores a value in the context's data store with thread-safe access. Initializes the data map if it doesn't exist.
func (*Context) SetCookie ¶
func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)
SetCookie sets a cookie with various configurable options. Defaults path to "/" if empty.
func (*Context) WriteStatus ¶
WriteStatus writes the HTTP status code to the response.
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
func (*Group) Group ¶
func (g *Group) Group(path string, middlewares ...Middleware) *Group
Group creates a nested subgroup with an additional path segment
func (*Group) SetBasePath ¶
func (*Group) Use ¶
func (g *Group) Use(m Middleware)
type HandleFunc ¶
HandleFunc is a function type that takes a Context and returns an error.
func LoggerMiddleware ¶
func LoggerMiddleware(next HandleFunc) HandleFunc
LoggerMiddleware is a middleware that logs request details like method, URL, client IP, status, duration, referer, and user agent.
type JWTAuth ¶
type JWTAuth struct {
SecretKey []byte
TokenLookup string // e.g., "header:Authorization", "query:token", "cookie:jwt"
ContextKey string // where to store claims in context, e.g. "user"
}
JWTAuth holds the config for JWT verification middleware.
func (JWTAuth) Middleware ¶
func (j JWTAuth) Middleware(next HandleFunc) HandleFunc
Middleware validates JWT tokens from the configured source
type Logger ¶
type Logger struct {
}
Logger is a middleware that logs request details such as method, URL, client IP, status, duration, referer, and user agent.
type Message ¶
type Message struct {
// ID is the identifier for the SSE connection.
ID string `json:"id" xml:"id"`
// Data is the Data to be sent to the SSE connection.
Data any `json:"message"`
// Event is the event type for the SSE connection.
Event string `json:"event"`
}
Message is a struct that represents a Server-Sent Events (SSE) connection.
type Middleware ¶
type Middleware func(next HandleFunc) HandleFunc
type Okapi ¶
type Okapi struct {
Server *http.Server
TLSServer *http.Server
Renderer Renderer
// contains filtered or unexported fields
}
func Default ¶
func Default(options ...OptionFunc) *Okapi
Default creates a new Okapi instance with default settings
func (*Okapi) GetContext ¶
GetContext returns the current context
func (*Okapi) Group ¶
func (o *Okapi) Group(path string, middlewares ...Middleware) *Group
Group creates a new group with the specified path
func (*Okapi) HandleFunc ¶
func (o *Okapi) HandleFunc(method, path string, h HandleFunc)
HandleFunc adds a route with a custom handler function
func (*Okapi) Middlewares ¶
func (o *Okapi) Middlewares() []Middleware
Middlewares returns the list of middlewares
func (*Okapi) Next ¶
func (o *Okapi) Next(h HandleFunc) HandleFunc
Next applies the middlewares in correct order
func (*Okapi) ServeHTTP ¶
func (o *Okapi) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP implements the http.Handler interface
func (*Okapi) SetContext ¶
func (*Okapi) StartServer ¶
StartServer starts the Okapi server with the specified HTTP server
func (*Okapi) StaticFS ¶
func (o *Okapi) StaticFS(prefix string, fs http.FileSystem)
StaticFS serves static files from a custom http.FileSystem (e.g., embed.FS).
func (*Okapi) StaticFile ¶
StaticFile serves a single file at the specified path.
func (*Okapi) Use ¶
func (o *Okapi) Use(middlewares ...Middleware)
Use adds middleware to the Okapi instance
func (*Okapi) With ¶
func (o *Okapi) With(options ...OptionFunc) *Okapi
With applies the provided options to the Okapi instance
type OptionFunc ¶
type OptionFunc func(*Okapi)
func WithAccessLogDisabled ¶
func WithAccessLogDisabled() OptionFunc
WithAccessLogDisabled disables the access log for the Okapi instance
func WithAddr ¶
func WithAddr(addr string) OptionFunc
WithAddr sets the address for the Okapi instance
func WithLogger ¶
func WithLogger(logger *slog.Logger) OptionFunc
WithLogger sets the logger for the Okapi instance
func WithMux ¶
func WithMux(mux *mux.Router) OptionFunc
WithMux sets the router for the Okapi instance
func WithServer ¶
func WithServer(server *http.Server) OptionFunc
WithServer sets the HTTP server for the Okapi instance
func WithStrictSlash ¶
func WithStrictSlash(strict bool) OptionFunc
WithStrictSlash sets the strict slash mode for the Okapi instance
func WithTLSServer ¶
func WithTLSServer(server *http.Server) OptionFunc
WithTLSServer sets the TLS server for the Okapi instance
type RendererFunc ¶
type Response ¶
type Response interface {
http.ResponseWriter
BodyBytesSent() int
Status() int
Close()
Hijack() (net.Conn, *bufio.ReadWriter, error)
}
Response interface defines the methods for writing HTTP responses.
type Route ¶
type Route struct {
Name string
Path string
Method string
Handle HandleFunc
// contains filtered or unexported fields
}
type ValidateFunc ¶
ValidateFunc is a function type that implements the Validator interface
func (ValidateFunc) Validate ¶
func (vf ValidateFunc) Validate(data any) error