in dax/internal/client/response.go [1056:1103]
func decodeCompoundKey(reader *cbor.Reader) (map[string]types.AttributeValue, error) {
consumed, err := consumeNil(reader)
if err != nil {
return nil, err
}
if consumed {
return nil, nil
}
r, err := reader.BytesReader()
if err != nil {
return nil, err
}
defer r.Close()
hdr, err := r.PeekHeader()
if err != nil {
return nil, err
}
if hdr != cbor.MapStream {
return nil, &smithy.SerializationError{Err: errors.New("bad compound key")}
}
_, err = r.ReadMapLength()
if err != nil {
return nil, err
}
key := make(map[string]types.AttributeValue, 4)
for {
consumed, err := consumeBreak(r)
if err != nil {
return nil, err
}
if consumed {
break
}
k, err := r.ReadString()
if err != nil {
return nil, err
}
v, err := cbor.DecodeAttributeValue(r)
if err != nil {
return nil, err
}
key[k] = v
}
return key, nil
}