package http

import (
	"context"
	"fmt"
	"net/http"

	dsHTTP "edge-infra.dev/pkg/edge/datasync/http"
	commonCfg "edge-infra.dev/pkg/edge/datasync/internal/config"
	"edge-infra.dev/pkg/edge/datasync/kafkaclient"
)

func NewLivenessServer(pinger kafkaclient.Pinger, shouldRun chan bool, cfg *commonCfg.Config) *dsHTTP.Server {
	serverMux := http.NewServeMux()
	serverMux.HandleFunc("/healthz", healthCheckHandler(pinger))
	return dsHTTP.NewServer(cfg.LivenessPort, serverMux, shouldRun)
}

func healthCheckHandler(pinger kafkaclient.Pinger) http.HandlerFunc {
	return func(w http.ResponseWriter, _ *http.Request) {
		ctx := context.Background()
		err := pinger.Ping(ctx)
		if err != nil {
			fmt.Fprintf(w, "down")
			return
		}
		fmt.Fprintf(w, "up")
	}
}