@@ -9,11 +9,14 @@ import (
99// maxEventPayloadSize indicates the max size allowed for the data content (payload) of each event
1010const maxEventPayloadSize = 10240
1111
12- type Event struct {
13- Channel string `json:"channel"`
14- Name string `json:"name"`
15- Data interface {} `json:"data"`
16- SocketId * string `json:"socket_id,omitempty"`
12+ type batchEvent struct {
13+ Channel string `json:"channel"`
14+ Name string `json:"name"`
15+ Data string `json:"data"`
16+ SocketId * string `json:"socket_id,omitempty"`
17+ }
18+ type batchPayload struct {
19+ Batch []batchEvent `json:"batch"`
1720}
1821
1922type eventPayload struct {
@@ -27,8 +30,8 @@ type BufferedEvents struct {
2730 EventIds map [string ]string `json:"event_ids,omitempty"`
2831}
2932
30- func createTriggerPayload (channels []string , event string , data interface {}, socketID * string , encryptionKey string ) ([]byte , error ) {
31- dataBytes , err := encodePayload (data )
33+ func encodeTriggerBody (channels []string , event string , data interface {}, socketID * string , encryptionKey string ) ([]byte , error ) {
34+ dataBytes , err := encodeEventData (data )
3235 if err != nil {
3336 return nil , err
3437 }
@@ -49,25 +52,34 @@ func createTriggerPayload(channels []string, event string, data interface{}, soc
4952 })
5053}
5154
52- func createTriggerBatchPayload (batch []Event , encryptionKey string ) ([]byte , error ) {
55+ func encodeTriggerBatchBody (batch []Event , encryptionKey string ) ([]byte , error ) {
56+ batchEvents := make ([]batchEvent , len (batch ))
5357 for idx , e := range batch {
54- dataBytes , err := encodePayload (e .Data )
58+ var stringifyedDataBytes string
59+ dataBytes , err := encodeEventData (e .Data )
5560 if err != nil {
5661 return nil , err
5762 }
5863 if isEncryptedChannel (e .Channel ) {
59- batch [ idx ]. Data = encrypt (e .Channel , dataBytes , encryptionKey )
64+ stringifyedDataBytes = encrypt (e .Channel , dataBytes , encryptionKey )
6065 } else {
61- batch [ idx ]. Data = string (dataBytes )
66+ stringifyedDataBytes = string (dataBytes )
6267 }
63- if len (batch [ idx ]. Data .( string ) ) > maxEventPayloadSize {
68+ if len (stringifyedDataBytes ) > maxEventPayloadSize {
6469 return nil , fmt .Errorf ("Data of the event #%d in batch, must be smaller than 10kb" , idx )
6570 }
71+ newBatchEvent := batchEvent {
72+ Channel : e .Channel ,
73+ Name : e .Name ,
74+ Data : stringifyedDataBytes ,
75+ SocketId : e .SocketId ,
76+ }
77+ batchEvents [idx ] = newBatchEvent
6678 }
67- return json .Marshal (& batchRequest { batch })
79+ return json .Marshal (& batchPayload { batchEvents })
6880}
6981
70- func encodePayload (data interface {}) ([]byte , error ) {
82+ func encodeEventData (data interface {}) ([]byte , error ) {
7183 var dataBytes []byte
7284 var err error
7385
0 commit comments