diff options
| author | mihna123 <mihailonvojinovic@gmail.com> | 2026-08-21 20:09:08 +0200 |
|---|---|---|
| committer | mihna123 <mihailonvojinovic@gmail.com> | 2026-08-21 20:09:08 +0200 |
| commit | 9db000f9ccfd08b12fd2ed859b71c33e6ca165c5 (patch) | |
| tree | 21bf85bc63c6fe1a3f16b06e45dc73ffa64e81d6 /internal/server/server.go | |
| parent | dd4244db9abaa69cdcacbeccc8b3770f3142e91c (diff) | |
| download | openstore-9db000f9ccfd08b12fd2ed859b71c33e6ca165c5.tar.gz openstore-9db000f9ccfd08b12fd2ed859b71c33e6ca165c5.zip | |
server: serve html template from embedded fs
Diffstat (limited to 'internal/server/server.go')
| -rw-r--r-- | internal/server/server.go | 41 |
1 files changed, 30 insertions, 11 deletions
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() } |
