|
|
|
@ -133,11 +133,21 @@ func (a *api) mustParseBasedTpl(name string) *template.Template { |
|
|
|
|
|
|
|
|
|
type tplData struct { |
|
|
|
|
Payload interface{} |
|
|
|
|
Title string |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func newTPLData(r *http.Request, payload interface{}) tplData { |
|
|
|
|
return tplData{ |
|
|
|
|
Payload: payload, |
|
|
|
|
Title: "mediocregopher's lil web corner", |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
type executeTemplateOpt func(*tplData) |
|
|
|
|
|
|
|
|
|
func executeTemplateWithTitlePrefix(prefix string) executeTemplateOpt { |
|
|
|
|
return func(d *tplData) { |
|
|
|
|
d.Title = prefix + " - " + d.Title |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -145,10 +155,15 @@ func newTPLData(r *http.Request, payload interface{}) tplData { |
|
|
|
|
func executeTemplate( |
|
|
|
|
rw http.ResponseWriter, r *http.Request, |
|
|
|
|
tpl *template.Template, payload interface{}, |
|
|
|
|
opts ...executeTemplateOpt, |
|
|
|
|
) { |
|
|
|
|
|
|
|
|
|
tplData := newTPLData(r, payload) |
|
|
|
|
|
|
|
|
|
for _, opt := range opts { |
|
|
|
|
opt(&tplData) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if err := tpl.Execute(rw, tplData); err != nil { |
|
|
|
|
apiutil.InternalServerError( |
|
|
|
|
rw, r, fmt.Errorf("rendering template: %w", err), |
|
|
|
|