all repos — homestead @ 6db99a292ad6a3ba7c5fedce1a4337d3ceac78af

Code for my website

move error handler to mux.go

Alan Pearce
commit

6db99a292ad6a3ba7c5fedce1a4337d3ceac78af

parent

5f57f420477f91d5ab3bc3a1e0ce8eb42d54c9f4

2 files changed, 15 insertions(+), 16 deletions(-)

jump to
M internal/website/mux.gointernal/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.gointernal/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"