update library

This commit is contained in:
2025-05-15 14:33:40 +02:00
parent 2aa592252c
commit 155e7a4116
13 changed files with 218 additions and 260 deletions
+33 -1
View File
@@ -4,8 +4,30 @@ import (
"encoding/json"
"log/slog"
"net/http"
"strings"
)
type stringWriter struct {
builder strings.Builder
header http.Header
}
func newStringWriter() *stringWriter {
return &stringWriter{
header: make(http.Header),
}
}
func (w *stringWriter) Header() http.Header {
return w.header
}
func (w *stringWriter) Write(b []byte) (int, error) {
return w.builder.Write(b)
}
func (w *stringWriter) WriteHeader(statusCode int) {}
func (a *App) JSON(w http.ResponseWriter, code int, v any) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(code)
@@ -14,11 +36,21 @@ func (a *App) JSON(w http.ResponseWriter, code int, v any) {
func (a *App) HTML(w http.ResponseWriter, code int, name string, td *TemplateData) {
w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.WriteHeader(code)
err := a.Templates.Template(w, name, td)
if err != nil {
slog.Error("error rendering template", "error", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.WriteHeader(code)
}
func (a *App) RenderHTML(name string, td *TemplateData) (string, error) {
sw := newStringWriter()
err := a.Templates.Template(sw, name, td)
if err != nil {
slog.Error("error rendering template", "error", err)
return "", err
}
return sw.builder.String(), nil
}