47 lines
1,005 B
Go
47 lines
1,005 B
Go
package server
|
|
|
|
import (
|
|
"embed"
|
|
"html/template"
|
|
"net/http"
|
|
|
|
"github.com/Bronku/iroon/internal/store"
|
|
)
|
|
|
|
type Server struct {
|
|
tmpl map[string]*template.Template
|
|
s *store.Store
|
|
http.Handler
|
|
}
|
|
|
|
func (h *Server) Close() {
|
|
}
|
|
|
|
//go:embed static/*
|
|
var static embed.FS
|
|
|
|
func (h *Server) loadHandler() {
|
|
mux := http.NewServeMux()
|
|
|
|
mux.HandleFunc("GET /order/", h.render(h.order, "order"))
|
|
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)
|
|
|
|
h.Handler = mux
|
|
}
|
|
|
|
func New(store *store.Store) *Server {
|
|
var server Server
|
|
|
|
server.loadTemplates()
|
|
server.s = store
|
|
server.loadHandler()
|
|
|
|
return &server
|
|
}
|