move error handler to mux.go
1 file changed, 13 insertions(+), 0 deletions(-)
changed files
M internal/website/mux.go → internal/website/mux.go
@@ -9,6 +9,7 @@ "strings" ihttp "go.alanpearce.eu/homestead/internal/http" "go.alanpearce.eu/homestead/internal/server" + "go.alanpearce.eu/homestead/templates" "github.com/kevinpollet/nego" )@@ -26,6 +27,18 @@ } } return nil +} + +func (website *Website) ErrorHandler(err *ihttp.Error, w http.ResponseWriter, r *http.Request) { + if strings.Contains(r.Header.Get("Accept"), "text/html") { + w.WriteHeader(err.Code) + err := templates.Error(website.config, r.URL.Path, err).Render(r.Context(), w) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + } else { + http.Error(w, err.Message, err.Code) + } } func (website *Website) ServeHTTP(w http.ResponseWriter, r *http.Request) *ihttp.Error {