in client_consumer.go [92:139]
func (c *Client) ListConsumerGroup(project, logstore string) (cgList []*ConsumerGroup, err error) {
h := map[string]string{
"x-log-bodyrawsize": "0",
}
uri := fmt.Sprintf("/logstores/%v/consumergroups", logstore)
r, err := c.request(project, "GET", uri, h, nil)
if err != nil {
return nil, NewClientError(err)
}
defer r.Body.Close()
buf, err := ioutil.ReadAll(r.Body)
if err != nil {
return nil, NewClientError(err)
}
if r.StatusCode != http.StatusOK {
errMsg := &Error{}
err = json.Unmarshal(buf, errMsg)
if err != nil {
err = fmt.Errorf("failed to split shards")
if IsDebugLevelMatched(5) {
dump, _ := httputil.DumpResponse(r, true)
level.Error(Logger).Log("msg", string(dump))
}
return nil, NewClientError(err)
}
return nil, errMsg
}
type getConsumerGroup struct {
ConsumerGroupName string `json:"name"` // for getConsumerGroup, this is "name"
Timeout int `json:"timeout"` // timeout seconds
InOrder bool `json:"order"`
}
var cgListRaw []*getConsumerGroup
err = json.Unmarshal(buf, &cgListRaw)
for _, rawCg := range cgListRaw {
cgList = append(cgList, &ConsumerGroup{
ConsumerGroupName: rawCg.ConsumerGroupName,
Timeout: rawCg.Timeout,
InOrder: rawCg.InOrder,
})
}
return
}