| package api |
| |
| // Status can be used to query the Status endpoints |
| type Status struct { |
| c *Client |
| } |
| |
| // Status returns a handle to the status endpoints |
| func (c *Client) Status() *Status { |
| return &Status{c} |
| } |
| |
| // Leader is used to query for a known leader |
| func (s *Status) Leader() (string, error) { |
| r := s.c.newRequest("GET", "/v1/status/leader") |
| _, resp, err := requireOK(s.c.doRequest(r)) |
| if err != nil { |
| return "", err |
| } |
| defer resp.Body.Close() |
| |
| var leader string |
| if err := decodeBody(resp, &leader); err != nil { |
| return "", err |
| } |
| return leader, nil |
| } |
| |
| // Peers is used to query for a known raft peers |
| func (s *Status) Peers() ([]string, error) { |
| r := s.c.newRequest("GET", "/v1/status/peers") |
| _, resp, err := requireOK(s.c.doRequest(r)) |
| if err != nil { |
| return nil, err |
| } |
| defer resp.Body.Close() |
| |
| var peers []string |
| if err := decodeBody(resp, &peers); err != nil { |
| return nil, err |
| } |
| return peers, nil |
| } |