func encodeKinesisValue()

in statefun-sdk-go/v3/pkg/statefun/egress.go [200:224]


func encodeKinesisValue(k KinesisEgressBuilder) ([]byte, error) {
	if k.ValueType != nil {
		buffer := bytes.Buffer{}
		if err := k.ValueType.Serialize(&buffer, k.Value); err != nil {
			return nil, err
		}

		return buffer.Bytes(), nil
	}

	switch value := k.Value.(type) {
	case string:
		if !utf8.ValidString(value) {
			return nil, fmt.Errorf("strings must be valid utf-8")
		}

		return []byte(value), nil
	case []byte:
		b := make([]byte, len(value))
		copy(b, value)
		return b, nil
	default:
		return nil, errors.New("unable to convert value to bytes")
	}
}