all repos — homestead @ 802d74fc1d38b7ee64f63c2f10810b20305c828a

Code for my website

make HTTP error an interface

Alan Pearce
commit

802d74fc1d38b7ee64f63c2f10810b20305c828a

parent

c0f110119e434f188f5959c48570df12121cc663

1 file changed, 7 insertions(+), 11 deletions(-)

changed files
M domain/web/mux.godomain/web/mux.go
@@ -15,19 +15,19 @@
"github.com/kevinpollet/nego" ) -func (website *Website) ErrorHandler(err *ihttp.Error, w http.ResponseWriter, r *http.Request) { +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) + w.WriteHeader(err.StatusCode()) err := templates.Error(*website.siteSettings, err).Render(w) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } else { - http.Error(w, err.Message, err.Code) + err.WriteHTTP(w) } } -func (website *Website) ServeHTTP(w http.ResponseWriter, r *http.Request) *ihttp.Error { +func (website *Website) ServeHTTP(w http.ResponseWriter, r *http.Request) ihttp.Error { urlPath := r.URL.Path if r.URL.Query().Has("go-get") && r.URL.Query().Get("go-get") == "1" { urlPath = "/go" + r.URL.Path
@@ -75,7 +75,7 @@
return nil } -func (website *Website) Calendar(w http.ResponseWriter, r *http.Request) *ihttp.Error { +func (website *Website) Calendar(w http.ResponseWriter, r *http.Request) ihttp.Error { website.counter.Count(r, "Calendar") err := calendar.CalendarPage(*website.siteSettings, templates.PageSettings{ Title: "Calendar",
@@ -83,11 +83,7 @@ TitleAttrs: templates.Attrs{},
BodyAttrs: templates.Attrs{}, }, *website.calendar).Render(w) if err != nil { - return &ihttp.Error{ - Code: http.StatusInternalServerError, - Message: "", - Cause: err, - } + return ihttp.InternalServerError("could not render calendar page", err) } return nil
@@ -101,7 +97,7 @@ re := regexp.MustCompile(
"^(.*)\\." + strings.ReplaceAll(website.config.WildcardDomain, ".", `\.`) + "$", ) replace := "${1}." + website.config.Domains[0] - mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) *ihttp.Error { + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) ihttp.Error { switch { case r.URL.Query().Has("go-get") && r.URL.Query().Get("go-get") == "1": return website.ServeHTTP(w, r)