package main import ( "encoding/json" "fmt" "time" ) func (c *KVSClient) handleMembers(args []string) { respBody, status, err := c.doRequest("GET", "/members/", nil) if err != nil { fmt.Println(red("Error:"), err) return } if status != 200 { fmt.Println(red("Error:"), string(respBody)) return } var members []Member if err := json.Unmarshal(respBody, &members); err != nil { fmt.Println(red("Error parsing response:"), err) return } if len(members) == 0 { fmt.Println(yellow("No cluster members")) return } fmt.Println(cyan("Cluster Members:")) for _, m := range members { lastSeen := time.UnixMilli(m.LastSeen).Format(time.RFC3339) fmt.Printf(" • %s (%s) - Last seen: %s\n", m.ID, m.Address, lastSeen) } } func (c *KVSClient) handleHealth(args []string) { respBody, status, err := c.doRequest("GET", "/health", nil) if err != nil { fmt.Println(red("Error:"), err) return } if status != 200 { fmt.Println(red("Service unhealthy")) return } var health map[string]interface{} if err := json.Unmarshal(respBody, &health); err != nil { fmt.Println(red("Error parsing response:"), err) return } fmt.Println(green("Service Status:")) for k, v := range health { fmt.Printf(" %s: %v\n", cyan(k), v) } }