diff options
author | Brian Picciano <mediocregopher@gmail.com> | 2023-01-24 13:12:46 +0100 |
---|---|---|
committer | Brian Picciano <mediocregopher@gmail.com> | 2023-01-24 13:13:07 +0100 |
commit | b766eefe7cfaf334aeb607171250a2b4b9eaabf0 (patch) | |
tree | 10c20bd8d1f5f64a852b7668630eaff4ea02faf5 /src/http/tpl.go | |
parent | 6b3933282e3aa9803636b2ba580aced5c202eaa9 (diff) |
Add gemini CTA to HTTP pages
Diffstat (limited to 'src/http/tpl.go')
-rw-r--r-- | src/http/tpl.go | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/http/tpl.go b/src/http/tpl.go index 4af715a..0f6b531 100644 --- a/src/http/tpl.go +++ b/src/http/tpl.go @@ -99,6 +99,9 @@ func (a *api) tplFuncs() template.FuncMap { "DateTimeFormat": func(t time.Time) string { return t.Format("2006-01-02") }, + "SafeURL": func(u string) template.URL { + return template.URL(u) + }, } } @@ -123,6 +126,7 @@ func (a *api) mustParseTpl(name string) *template.Template { func (a *api) mustParseBasedTpl(name string) *template.Template { tpl := a.mustParseTpl(name) + tpl = template.Must(tpl.New("gemini-cta.html").Parse(mustReadTplFile("gemini-cta.html"))) tpl = template.Must(tpl.New("base.html").Parse(mustReadTplFile("base.html"))) return tpl } @@ -131,15 +135,19 @@ type tplData struct { Payload interface{} } +func newTPLData(r *http.Request, payload interface{}) tplData { + return tplData{ + Payload: payload, + } +} + // executeTemplate expects to be the final action in an http.Handler func executeTemplate( rw http.ResponseWriter, r *http.Request, tpl *template.Template, payload interface{}, ) { - tplData := tplData{ - Payload: payload, - } + tplData := newTPLData(r, payload) if err := tpl.Execute(rw, tplData); err != nil { apiutil.InternalServerError( @@ -164,7 +172,10 @@ func (a *api) renderDumbTplHandler(tplName string) http.Handler { tpl := a.mustParseBasedTpl(tplName) return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - if err := tpl.Execute(rw, nil); err != nil { + + tplData := newTPLData(r, nil) + + if err := tpl.Execute(rw, tplData); err != nil { apiutil.InternalServerError( rw, r, fmt.Errorf("rendering %q: %w", tplName, err), ) |