From 9db000f9ccfd08b12fd2ed859b71c33e6ca165c5 Mon Sep 17 00:00:00 2001 From: mihna123 Date: Fri, 21 Aug 2026 20:09:08 +0200 Subject: server: serve html template from embedded fs --- internal/server/server.go | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) (limited to 'internal/server') diff --git a/internal/server/server.go b/internal/server/server.go index 5b6cb8e..c391ab3 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -1,30 +1,49 @@ package server import ( - "io" "log" + "time" + "html/template" "net/http" + + "codeberg.org/mihna123/openstore/internal/web" ) -type ServerConfig struct { +type Config struct { Name string } type Server struct { - config *ServerConfig + config *Config + tmpl *template.Template + mux *http.ServeMux } -func NewServer(config *ServerConfig) Server { - return Server{config: config} +func New(config *Config) *Server { + tmpl := template.Must(template.ParseFS(web.Files, "templates/*.html")) + mux := http.NewServeMux() + return &Server{config, tmpl, mux} } -func (server *Server) Serve(addr string) { - http.HandleFunc("GET /", func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, "Hello World!\n") +func (s *Server) Serve(addr string) error { + s.mux.HandleFunc("GET /", func(w http.ResponseWriter, r *http.Request) { + log.Printf("[%s] %s - %s", r.Method, r.RequestURI, r.RemoteAddr) + err := s.tmpl.ExecuteTemplate(w, "index.html", nil) + + if err != nil { + log.Printf("Error with template: %s", err.Error()) + return + } }) - log.Default().Printf("Server \"%s\" listening at %s", server.config.Name, addr) - err := http.ListenAndServe(addr, nil) - log.Fatal(err) + httpSrv := http.Server{ + Addr: addr, + Handler: s.mux, + ReadHeaderTimeout: 5 * time.Second, + WriteTimeout: 10 * time.Second, + } + + log.Printf("Server \"%s\" listening at %s", s.config.Name, addr) + return httpSrv.ListenAndServe() } -- cgit v1.3.1