in log_project.go [1114:1165]
func (p *LogProject) listEtlMeta(etlMetaName, etlMetaKey, etlMetaTag string, offset, size int) (total int, count int, etlMeta []*EtlMeta, err error) {
h := map[string]string{
"x-log-bodyrawsize": "0",
}
uri := fmt.Sprintf("/%v?offset=%v&size=%v&etlMetaName=%v&etlMetaKey=%v&etlMetaTag=%v", EtlMetaURI, offset, size, etlMetaName, etlMetaKey, etlMetaTag)
r, err := request(p, "GET", uri, h, nil)
if err != nil {
return 0, 0, nil, NewClientError(err)
}
defer r.Body.Close()
buf, err := ioutil.ReadAll(r.Body)
if err != nil {
return 0, 0, nil, readResponseError(err)
}
if r.StatusCode != http.StatusOK {
return 0, 0, nil, httpStatusNotOkError(buf, r.Header, r.StatusCode)
}
type BodyMeta struct {
MetaName string `json:"etlMetaName"`
MetaKey string `json:"etlMetaKey"`
MetaTag string `json:"etlMetaTag"`
MetaValue string `json:"etlMetaValue"`
}
type Body struct {
Total int `json:"total"`
Count int `json:"count"`
MetaList []*BodyMeta `json:"etlMetaList"`
}
body := &Body{}
err = json.Unmarshal(buf, body)
if err != nil {
return 0, 0, nil, invalidJsonRespError(string(buf), r.Header, r.StatusCode)
}
if body.Count == 0 || len(body.MetaList) == 0 {
return body.Total, body.Count, nil, nil
}
var etlMetaList []*EtlMeta = make([]*EtlMeta, len(body.MetaList))
for index, value := range body.MetaList {
var metaValueMap map[string]string
err := json.Unmarshal([]byte(value.MetaValue), &metaValueMap)
if err != nil {
return 0, 0, nil, NewClientError(err)
}
etlMetaList[index] = &EtlMeta{
MetaName: value.MetaName,
MetaKey: value.MetaKey,
MetaTag: value.MetaTag,
MetaValue: metaValueMap,
}
}
return body.Total, body.Count, etlMetaList, nil
}