t2/routes/routes.go

46 lines
990 B
Go

package routes
import (
"log/slog"
"net/http"
"gitea.henriburau.de/haw-lan/cod4watcher/services"
"github.com/a-h/templ"
)
type HTTPHandler func(w http.ResponseWriter, r *http.Request) error
func Make(h HTTPHandler) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
if err := h(w, r); err != nil {
slog.Error("HTTP handler error", "err", err, "path", r.URL.Path)
}
}
}
type Server struct {
cs *services.CaptureService
c4s *services.CoD4Service
}
func NewServer(cs *services.CaptureService, c4s *services.CoD4Service) *Server {
return &Server{
cs, c4s,
}
}
func Render(w http.ResponseWriter, r *http.Request, c templ.Component) error {
return c.Render(r.Context(), w)
}
func hxRedirect(w http.ResponseWriter, r *http.Request, url string) error {
if len(r.Header.Get("HX-Request")) > 0 {
w.Header().Set("hx-redirect", url)
w.WriteHeader(http.StatusSeeOther)
return nil
}
http.Redirect(w, r, url, http.StatusSeeOther)
return nil
}