From ac3845c11e0716d99de9b5cbb772431174c14b45 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Thu, 30 Nov 2017 21:51:56 +0100 Subject: [PATCH] Reworked the template loading (fix #54) --- handlers/handlers.go | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/handlers/handlers.go b/handlers/handlers.go index 5399dad..350724e 100644 --- a/handlers/handlers.go +++ b/handlers/handlers.go @@ -48,25 +48,31 @@ func New(store store.Store) (*Handler, error) { return h, nil } -func (h *Handler) setTemplateFromFS(name string) error { - tokenTemplate, err := tmpls.FSString(false, "/"+name) - if err != nil { - return errors.Wrap(err, "could not read token template file") - } - templ, err := template.New(name).Parse(tokenTemplate) - if err != nil { - return errors.Wrap(err, "could not create template from file content") +func (h *Handler) addTemplatesFromFS(files []string) error { + var t *template.Template + for _, file := range files { + fileContent, err := tmpls.FSString(false, "/"+file) + if err != nil { + return errors.Wrap(err, "could not read template file") + } + if t == nil { + t, err = template.New(file).Parse(fileContent) + if err != nil { + return errors.Wrap(err, "could not create template from file content") + } + continue + } + if _, err := t.New(file).Parse(fileContent); err != nil { + return errors.Wrap(err, "could not parse template") + } } - h.engine.SetHTMLTemplate(templ) + h.engine.SetHTMLTemplate(t) return nil } func (h *Handler) setHandlers() error { - templates := []string{"token.html", "protected.html"} - for _, template := range templates { - if err := h.setTemplateFromFS(template); err != nil { - return errors.Wrapf(err, "could not set template %s from FS", template) - } + if err := h.addTemplatesFromFS([]string{"token.html", "protected.html"}); err != nil { + return errors.Wrap(err, "could not add templates from FS") } h.engine.Use(ginrus.Ginrus(logrus.StandardLogger(), time.RFC3339, false)) protected := h.engine.Group("/api/v1/protected")