33 lines
778 B
Go
33 lines
778 B
Go
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)
|
|
}
|
|
}
|