summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
authormihna123 <mihailonvojinovic@gmail.com>2026-08-21 20:09:08 +0200
committermihna123 <mihailonvojinovic@gmail.com>2026-08-21 20:09:08 +0200
commit9db000f9ccfd08b12fd2ed859b71c33e6ca165c5 (patch)
tree21bf85bc63c6fe1a3f16b06e45dc73ffa64e81d6 /internal/server
parentdd4244db9abaa69cdcacbeccc8b3770f3142e91c (diff)
downloadopenstore-9db000f9ccfd08b12fd2ed859b71c33e6ca165c5.tar.gz
openstore-9db000f9ccfd08b12fd2ed859b71c33e6ca165c5.zip
server: serve html template from embedded fs
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/server.go41
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()
}