refactor: cleanups for error template; embed and load on startup

This commit is contained in:
Trong Huu Nguyen
2021-10-17 20:24:06 +02:00
parent 1d92df8284
commit 5d2f8c3e84
3 changed files with 46 additions and 109 deletions
-1
View File
@@ -12,5 +12,4 @@ FROM alpine:3
RUN export PATH=$PATH:/app
WORKDIR /app
COPY --from=builder /src/bin/wonderwall /app/wonderwall
COPY --from=builder /src/templates /app/templates/
ENTRYPOINT ["/app/wonderwall"]
+19 -7
View File
@@ -1,6 +1,7 @@
package router
import (
_ "embed"
"html/template"
"net/http"
"net/url"
@@ -18,6 +19,20 @@ type ErrorPage struct {
RetryURI string
}
//go:embed templates/error.gohtml
var errorGoHtml string
var errorTemplate *template.Template
func init() {
var err error
errorTemplate = template.New("error")
errorTemplate, err = errorTemplate.Parse(errorGoHtml)
if err != nil {
log.Fatalf("parsing error template: %+v", err)
}
}
func (h *Handler) respondError(w http.ResponseWriter, r *http.Request, statusCode int, cause error) {
logger := httplog.LogEntry(r.Context())
logger.Error().Stack().Err(cause).Msgf("error in route: %+v", cause)
@@ -35,12 +50,6 @@ func (h *Handler) respondError(w http.ResponseWriter, r *http.Request, statusCod
func (h *Handler) defaultErrorResponse(w http.ResponseWriter, r *http.Request, statusCode int) {
w.WriteHeader(statusCode)
t, err := template.ParseFiles("templates/error.html")
if err != nil {
log.Errorf("parsing error template: %+v", err)
return
}
loginCookie, err := h.getLoginCookie(r)
if err != nil {
loginCookie = nil
@@ -50,7 +59,10 @@ func (h *Handler) defaultErrorResponse(w http.ResponseWriter, r *http.Request, s
CorrelationID: middleware.GetReqID(r.Context()),
RetryURI: request.RetryURI(r, h.Config.Ingress, loginCookie),
}
_ = t.Execute(w, errorPage)
err = errorTemplate.Execute(w, errorPage)
if err != nil {
log.Errorf("executing error template: %+v", err)
}
}
func (h *Handler) customErrorRedirect(w http.ResponseWriter, r *http.Request, statusCode int) error {
File diff suppressed because one or more lines are too long