45 lines
930 B
Go
45 lines
930 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
|
|
}
|
|
|
|
func NewServer(cs *services.CaptureService) *Server {
|
|
return &Server{
|
|
cs,
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|