package handlers import ( "net/http" "git.haelnorr.com/h/oslstats/internal/view/page" "git.haelnorr.com/h/golib/hws" ) // Handles responses to the / path. Also serves a 404 Page for paths that // don't have explicit handlers func Index(server *hws.Server) http.Handler { return http.HandlerFunc( func(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/" { page, err := ErrorPage(http.StatusNotFound) if err != nil { err = server.ThrowError(w, r, hws.HWSError{ StatusCode: http.StatusInternalServerError, Message: "An error occured trying to generate the error page", Error: err, Level: hws.ErrorLevel("error"), RenderErrorPage: false, }) if err != nil { server.ThrowFatal(w, err) } return } err = page.Render(r.Context(), w) if err != nil { err = server.ThrowError(w, r, hws.HWSError{ StatusCode: http.StatusInternalServerError, Message: "An error occured trying to render the error page", Error: err, Level: hws.ErrorLevel("error"), RenderErrorPage: false, }) if err != nil { server.ThrowFatal(w, err) } return } } page.Index().Render(r.Context(), w) }, ) }