ezhandler/helper.go

36 lines
1.2 KiB
Go

package ezhandler
import "net/http"
func NewHelper(errH ErrorHandler) *Helper {
return &Helper{errH}
}
// ErrorHandler writes an appropriate response to the [http.ResponseWriter] for the provided [error].
// If the [error] is nil, it should be a no op.
type ErrorHandler func(http.ResponseWriter, *http.Request, error)
// Helper provides methods to make easier, more idiomatic [http.Handler]s.
type Helper struct {
errHandler ErrorHandler
}
// Handler returns an [http.Handler] for the provided [Handler].
// If hnd returns an error, an appropriate error response is written using the ErrorHandler.
func (help *Helper) Handler(hnd Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if err := hnd.ServeHTTP(w, r); err != nil {
help.errHandler(w, r, err)
}
})
}
// Handler returns an [http.Handler] for the provided [HandlerFunc].
// If hnd returns an error, an appropriate error response is written using the ErrorHandler.
func (help *Helper) HandlerFunc(hnd HandlerFunc) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if err := hnd(w, r); err != nil {
help.errHandler(w, r, err)
}
})
}