package health import ( "context" "encoding/json" "errors" "log/slog" "net/http" "time" ) type Server struct { server *http.Server } func New(addr string) *Server { mux := http.NewServeMux() mux.HandleFunc("/health", func(w http.ResponseWriter, _ *http.Request) { w.Header().Set("Content-Type", "application/json") _ = json.NewEncoder(w).Encode(map[string]string{"code": "ok"}) }) return &Server{server: &http.Server{Addr: addr, Handler: mux, ReadHeaderTimeout: 5 * time.Second}} } func (s *Server) Start(logger *slog.Logger) { go func() { if err := s.server.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { logger.Error("health server failed", "error", err) } }() } func (s *Server) Shutdown(ctx context.Context) error { return s.server.Shutdown(ctx) }