in adapter/pkg/provider/provider.go [100:140]
func (pv *paramValue) extractValue(requirements labels.Requirements) error {
vv := make([]string, 10)
for _, r := range requirements {
if !strings.HasPrefix(r.Key(), pv.key) {
continue
}
kk := strings.Split(r.Key(), ".")
if len(kk) == 1 {
vv, _ = bufferEntity(vv, 0, r, nil)
pv.val = &vv[0]
return nil
} else if len(kk) < 3 {
return fmt.Errorf("invalid label key:%s", r.Key())
}
i, err := strconv.ParseInt(kk[2], 10, 8)
if err != nil {
return fmt.Errorf("failed to parse index string to int: %v", err)
}
index := int(i)
switch kk[1] {
case labelValueTypeStr:
vv, _ = bufferEntity(vv, index, r, nil)
case labelValueTypeByte:
vv, err = bufferEntity(vv, index, r, func(encoded string) (string, error) {
var bytes []byte
bytes, err = hex.DecodeString(encoded)
if err != nil {
return "", fmt.Errorf("failed to decode hex to string: %v", err)
}
return string(bytes), nil
})
if err != nil {
return err
}
}
}
val := strings.Join(vv, "")
pv.val = &val
return nil
}