@@ -50,8 +50,10 @@ func NewMessage(message *amqp.Message, receiver *amqp.Receiver) *Message {
5050 return & Message {AMQP : message , AMQPrcv : receiver , format : fmt , version : vn }
5151}
5252
53- var _ binding.Message = (* Message )(nil )
54- var _ binding.MessageMetadataReader = (* Message )(nil )
53+ var (
54+ _ binding.Message = (* Message )(nil )
55+ _ binding.MessageMetadataReader = (* Message )(nil )
56+ )
5557
5658func getSpecVersion (message * amqp.Message ) spec.Version {
5759 if sv , ok := message .ApplicationProperties [specs .PrefixedSpecVersionName ()]; ok {
@@ -74,7 +76,8 @@ func (m *Message) ReadEncoding() binding.Encoding {
7476
7577func (m * Message ) ReadStructured (ctx context.Context , encoder binding.StructuredWriter ) error {
7678 if m .format != nil {
77- return encoder .SetStructuredEvent (ctx , m .format , bytes .NewReader (m .AMQP .GetData ()))
79+ data := m .getAmqpData ()
80+ return encoder .SetStructuredEvent (ctx , m .format , bytes .NewReader (data ))
7881 }
7982 return binding .ErrNotStructured
8083}
@@ -106,7 +109,7 @@ func (m *Message) ReadBinary(ctx context.Context, encoder binding.BinaryWriter)
106109 }
107110 }
108111
109- data := m .AMQP . GetData ()
112+ data := m .getAmqpData ()
110113 if len (data ) != 0 { // Some data
111114 err = encoder .SetData (bytes .NewBuffer (data ))
112115 if err != nil {
@@ -137,3 +140,15 @@ func (m *Message) Finish(err error) error {
137140 }
138141 return m .AMQPrcv .AcceptMessage (context .Background (), m .AMQP )
139142}
143+
144+ // fixes: github.com/cloudevents/spec/issues/1275
145+ func (m * Message ) getAmqpData () []byte {
146+ var data []byte
147+ amqpData := m .AMQP .Data
148+
149+ // TODO: replace with slices.Concat once go mod bumped to 1.22
150+ for idx := range amqpData {
151+ data = append (data , amqpData [idx ]... )
152+ }
153+ return data
154+ }
0 commit comments