handlers

package
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Jul 27, 2023 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Examples

Constants

View Source
const (
	// HTTPMethodOverrideHeader is a commonly used http header to override a request method
	HTTPMethodOverrideHeader = "X-HTTP-Method-Override"
	// HTTPMethodOverrideFormKey is a commonly used HTML form key to override a request method
	HTTPMethodOverrideFormKey = "_method"
	// OriginalMethodContextKey record old original request method
	OriginalMethodContextKey contextKey = "originalMethod"
)
View Source
const FavIcon = "/favicon.ico"

FavIcon uri for favicon.ico

Variables

View Source
var IgnorePaths = []string{
	"/health",
	"/status",
}
View Source
var RequestLogger = ConsoleLogger

RequestLogger middleware. alias of ConsoleLogger

Functions

func ConsoleLogger

func ConsoleLogger(ignorePaths ...string) rux.HandlerFunc

ConsoleLogger middleware.

func DefaultSkipper

func DefaultSkipper(_ *rux.Context) bool

DefaultSkipper returns false which processes the middleware.

func DumpRoutesHandler

func DumpRoutesHandler() rux.HandlerFunc

DumpRoutesHandler dump all registered routes info

func GenRequestID

func GenRequestID(key string) rux.HandlerFunc

GenRequestID for the request

func HTTPBasicAuth

func HTTPBasicAuth(accounts map[string]string) rux.HandlerFunc

HTTPBasicAuth for the request

Usage:

r.GET("/auth", func(c *rux.Context) {
	c.WriteString("hello")
}, HTTPBasicAuth(map[string]string{"testuser": "123"}))

func HTTPMethodOverrideHandler

func HTTPMethodOverrideHandler(h http.Handler) http.Handler

HTTPMethodOverrideHandler wraps and returns a http.Handler which checks for the X-HTTP-Method-Override header or the _method form key, and overrides (if valid) request.Method with its value.

Refer from the https://github.com/gorilla/handlers

Example
r := rux.New()

h := HTTPMethodOverrideHandler(r)
err := http.ListenAndServe(":8080", h)
if err != nil {
	panic(err)
}

// can also:
h1 := r.WrapHTTPHandlers(HTTPMethodOverrideHandler)
goutil.PanicErr(http.ListenAndServe(":8080", h1))
Output:

func IgnoreFavIcon

func IgnoreFavIcon() rux.HandlerFunc

IgnoreFavIcon middleware

func PanicsHandler

func PanicsHandler() rux.HandlerFunc

PanicsHandler middleware

func Timeout

func Timeout(timeout time.Duration) rux.HandlerFunc

Timeout is a middleware for handle logic. the method is referred from "github.com/go-chi/chi/middleware"

It's required that you select the ctx.Done() channel to check for the signal if the context has reached its deadline and return, otherwise the timeout signal will be just ignored.

a route/handler may look like:

 r.GET("/long", func(c *rux.Context) {
	 ctx := c.Req.Context()
	 processTime := time.Duration(rand.Intn(4)+1) * time.Second

	 select {
	 case <-ctx.Done():
	 	return

	 case <-time.After(processTime):
	 	 // The above channel simulates some hard work.
	 }

	 c.WriteBytes([]byte("done"))
 })

Types

type Skipper

type Skipper func(*rux.Context) bool

Skipper defines a function to skip middleware. Returning true skips processing the middleware.

Jump to

Keyboard shortcuts

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