move error handler to mux.go
2 files changed, 15 insertions(+), 16 deletions(-)
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 {
M internal/website/website.go → internal/website/website.go
@@ -1,11 +1,9 @@ package website import ( - "net/http" "os" "path/filepath" "slices" - "strings" "sync" "gitlab.com/tozd/go/errors"@@ -17,7 +15,6 @@ ihttp "go.alanpearce.eu/homestead/internal/http" "go.alanpearce.eu/homestead/internal/server" "go.alanpearce.eu/homestead/internal/storage" "go.alanpearce.eu/homestead/internal/storage/sqlite" - "go.alanpearce.eu/homestead/templates" "go.alanpearce.eu/x/log" "github.com/benpate/digit"@@ -127,23 +124,12 @@ }() <-firstUpdate - mux := ihttp.NewServeMux() - mux.HandleError(func(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(cfg, 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) - } - }) - website.acctResource = "acct:" + cfg.Email website.me = digit.NewResource(website.acctResource). Link("http://openid.net/specs/connect/1.0/issuer", "", cfg.OIDCHost.String()) + mux := ihttp.NewServeMux() + mux.HandleError(website.ErrorHandler) mux.Handle("/", website) mux.HandleFunc("/.well-known/webfinger", website.webfinger) const oidcPath = "/.well-known/openid-configuration"