use builtin error interface for http handlers
1 file changed, 9 insertions(+), 5 deletions(-)
changed files
M shared/http/mux.go → shared/http/mux.go
@@ -7,15 +7,15 @@ "alin.ovh/x/log" ) // HandleFunc is a function that handles an HTTP request and may return an Error. -type HandleFunc func(http.ResponseWriter, *http.Request) Error +type HandleFunc func(http.ResponseWriter, *http.Request) error // Handler is an interface for types that can serve HTTP requests and may return an Error. type Handler interface { - ServeHTTP(http.ResponseWriter, *http.Request) Error + ServeHTTP(http.ResponseWriter, *http.Request) error } // ErrorHandler is a function that handles HTTP errors. -type ErrorHandler func(Error, http.ResponseWriter, *http.Request) +type ErrorHandler func(error, http.ResponseWriter, *http.Request) // ServeMux is an HTTP request multiplexer with error handling support. // It matches the URL of each incoming request against a list of registered@@ -31,8 +31,12 @@ func NewServeMux(logger *log.Logger) *ServeMux { return &ServeMux{ ServeMux: http.NewServeMux(), log: logger, - errorHandler: func(err Error, w http.ResponseWriter, _ *http.Request) { - http.Error(w, err.Error(), err.StatusCode()) + errorHandler: func(err error, w http.ResponseWriter, _ *http.Request) { + if hErr, ok := err.(Error); ok { + http.Error(w, hErr.Error(), hErr.StatusCode()) + } else { + http.Error(w, "Internal Server Error", http.StatusInternalServerError) + } }, } }