package handlers import ( "html/template" "net/http" ) // NotFoundHandler handles 404 errors type NotFoundHandler struct { Templates *template.Template RegistryURL string } func (h *NotFoundHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { RenderNotFound(w, r, h.Templates, h.RegistryURL) } // RenderNotFound renders the 404 page template. // Use this from other handlers when a resource is not found. func RenderNotFound(w http.ResponseWriter, r *http.Request, templates *template.Template, registryURL string) { w.WriteHeader(http.StatusNotFound) data := struct { PageData }{ PageData: NewPageData(r, registryURL), } if err := templates.ExecuteTemplate(w, "404", data); err != nil { http.Error(w, "Page not found", http.StatusNotFound) } }