chldapasswd/static.go

50 lines
1.2 KiB
Go

package main
import (
"embed"
"html/template"
"log"
"net/http"
)
//go:embed all:static
var assets embed.FS
func displayTmpl(w http.ResponseWriter, page string, vars map[string]interface{}) {
data, err := assets.ReadFile("static/" + page)
if err != nil {
log.Fatalf("Unable to find %q: %s", page, err.Error())
}
footer, err := assets.ReadFile("static/footer.html")
if err != nil {
log.Fatalf("Unable to find %q: %s", "footer.html", err.Error())
}
header, err := assets.ReadFile("static/header.html")
if err != nil {
log.Fatalf("Unable to find %q: %s", "header.html", err.Error())
}
tpl := template.Must(template.New("page").Parse(string(data)))
tpl.New("footer.html").Parse(string(footer))
tpl.New("header.html").Parse(string(header))
tpl.ExecuteTemplate(w, "page", vars)
}
func displayTmplError(w http.ResponseWriter, statusCode int, page string, vars map[string]interface{}) {
w.WriteHeader(statusCode)
displayTmpl(w, page, vars)
}
func displayMsg(w http.ResponseWriter, msg string, statusCode int) {
w.WriteHeader(statusCode)
label := "error"
if statusCode < 400 {
label = "message"
}
displayTmpl(w, "message.html", map[string]interface{}{label: msg})
}