50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
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)
|
|
},
|
|
)
|
|
}
|