func()

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
}