diff --git a/internal/server/server.go b/internal/server/server.go index e22f089..4267e35 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -9,11 +9,17 @@ import ( ) type Server struct { - tmpl map[string]*template.Template - s *store.Store + tmpl map[string]*template.Template + s *store.Store + routes map[string]route http.Handler } +type route struct { + function fetcher + template string +} + func (h *Server) Close() { } @@ -23,13 +29,12 @@ var static embed.FS func (h *Server) loadHandler() { mux := http.NewServeMux() - mux.HandleFunc("GET /order/", h.render(h.order, "order")) + for i, e := range h.routes { + mux.HandleFunc(i, h.render(e.function, e.template)) + } + mux.HandleFunc("GET /", h.redirect("/orders", http.StatusSeeOther)) - mux.HandleFunc("GET /orders", h.render(h.orders, "orders")) - mux.HandleFunc("POST /order/", h.render(h.postOrder, "confirmation")) - mux.HandleFunc("GET /cakes", h.render(h.cakes, "cakes")) - mux.HandleFunc("GET /cake/", h.render(h.cake, "cake")) - mux.HandleFunc("POST /cake/", h.render(h.postCake, "confirmation")) + fs := http.FileServerFS(static) mux.Handle("GET /static/", fs) @@ -39,6 +44,15 @@ func (h *Server) loadHandler() { func New(store *store.Store) *Server { var server Server + server.routes = map[string]route{ + "GET /order/": {server.order, "order"}, + "GET /orders": {server.orders, "orders"}, + "GET /cake/": {server.cake, "cake"}, + "GET /cakes": {server.cakes, "cakes"}, + "POST /order/": {server.postOrder, "confirmation"}, + "POST /cake/": {server.postCake, "confirmation"}, + } + server.loadTemplates() server.s = store server.loadHandler() diff --git a/internal/server/template.go b/internal/server/template.go index a554d0f..7fa2ae4 100644 --- a/internal/server/template.go +++ b/internal/server/template.go @@ -14,16 +14,15 @@ var templates embed.FS func (h *Server) loadTemplates() { h.tmpl = make(map[string]*template.Template) - pages := []string{"orders", "order", "cake", "cakes", "confirmation"} - for _, page := range pages { + for _, page := range h.routes { tmpl, err := template.ParseFS(templates, "templates/layout/*.html", - "templates/"+page+".html", + "templates/"+page.template+".html", ) if err != nil { log.Fatal(err) } - h.tmpl[page] = tmpl + h.tmpl[page.template] = tmpl } }