1package api 2 3// Status can be used to query the Status endpoints 4type Status struct { 5 c *Client 6} 7 8// Status returns a handle to the status endpoints 9func (c *Client) Status() *Status { 10 return &Status{c} 11} 12 13// Leader is used to query for a known leader 14func (s *Status) LeaderWithQueryOptions(q *QueryOptions) (string, error) { 15 r := s.c.newRequest("GET", "/v1/status/leader") 16 17 if q != nil { 18 r.setQueryOptions(q) 19 } 20 21 _, resp, err := requireOK(s.c.doRequest(r)) 22 if err != nil { 23 return "", err 24 } 25 defer closeResponseBody(resp) 26 27 var leader string 28 if err := decodeBody(resp, &leader); err != nil { 29 return "", err 30 } 31 return leader, nil 32} 33 34func (s *Status) Leader() (string, error) { 35 return s.LeaderWithQueryOptions(nil) 36} 37 38// Peers is used to query for a known raft peers 39func (s *Status) PeersWithQueryOptions(q *QueryOptions) ([]string, error) { 40 r := s.c.newRequest("GET", "/v1/status/peers") 41 42 if q != nil { 43 r.setQueryOptions(q) 44 } 45 46 _, resp, err := requireOK(s.c.doRequest(r)) 47 if err != nil { 48 return nil, err 49 } 50 defer closeResponseBody(resp) 51 52 var peers []string 53 if err := decodeBody(resp, &peers); err != nil { 54 return nil, err 55 } 56 return peers, nil 57} 58 59func (s *Status) Peers() ([]string, error) { 60 return s.PeersWithQueryOptions(nil) 61} 62