package health import ( "encoding/json" "time" "github.com/yusing/go-proxy/internal/net/types" "github.com/yusing/go-proxy/internal/utils/strutils" ) type JSONRepresentation struct { Name string Config *HealthCheckConfig Status Status Started time.Time Uptime time.Duration URL types.URL Extra map[string]any } func (jsonRepr *JSONRepresentation) MarshalJSON() ([]byte, error) { url := jsonRepr.URL.String() if url == "http://:0" { url = "" } return json.Marshal(map[string]any{ "name": jsonRepr.Name, "config": jsonRepr.Config, "started": jsonRepr.Started.Unix(), "startedStr": strutils.FormatTime(jsonRepr.Started), "status": jsonRepr.Status.String(), "uptime": jsonRepr.Uptime.Seconds(), "uptimeStr": strutils.FormatDuration(jsonRepr.Uptime), "url": url, "extra": jsonRepr.Extra, }) }