func decodeCompoundKey()

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
}