@@ -9,11 +9,14 @@ import (
9
9
// maxEventPayloadSize indicates the max size allowed for the data content (payload) of each event
10
10
const maxEventPayloadSize = 10240
11
11
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"`
17
20
}
18
21
19
22
type eventPayload struct {
@@ -27,8 +30,8 @@ type BufferedEvents struct {
27
30
EventIds map [string ]string `json:"event_ids,omitempty"`
28
31
}
29
32
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 )
32
35
if err != nil {
33
36
return nil , err
34
37
}
@@ -49,25 +52,34 @@ func createTriggerPayload(channels []string, event string, data interface{}, soc
49
52
})
50
53
}
51
54
52
- func createTriggerBatchPayload (batch []Event , encryptionKey string ) ([]byte , error ) {
55
+ func encodeTriggerBatchBody (batch []Event , encryptionKey string ) ([]byte , error ) {
56
+ batchEvents := make ([]batchEvent , len (batch ))
53
57
for idx , e := range batch {
54
- dataBytes , err := encodePayload (e .Data )
58
+ var stringifyedDataBytes string
59
+ dataBytes , err := encodeEventData (e .Data )
55
60
if err != nil {
56
61
return nil , err
57
62
}
58
63
if isEncryptedChannel (e .Channel ) {
59
- batch [ idx ]. Data = encrypt (e .Channel , dataBytes , encryptionKey )
64
+ stringifyedDataBytes = encrypt (e .Channel , dataBytes , encryptionKey )
60
65
} else {
61
- batch [ idx ]. Data = string (dataBytes )
66
+ stringifyedDataBytes = string (dataBytes )
62
67
}
63
- if len (batch [ idx ]. Data .( string ) ) > maxEventPayloadSize {
68
+ if len (stringifyedDataBytes ) > maxEventPayloadSize {
64
69
return nil , fmt .Errorf ("Data of the event #%d in batch, must be smaller than 10kb" , idx )
65
70
}
71
+ newBatchEvent := batchEvent {
72
+ Channel : e .Channel ,
73
+ Name : e .Name ,
74
+ Data : stringifyedDataBytes ,
75
+ SocketId : e .SocketId ,
76
+ }
77
+ batchEvents [idx ] = newBatchEvent
66
78
}
67
- return json .Marshal (& batchRequest { batch })
79
+ return json .Marshal (& batchPayload { batchEvents })
68
80
}
69
81
70
- func encodePayload (data interface {}) ([]byte , error ) {
82
+ func encodeEventData (data interface {}) ([]byte , error ) {
71
83
var dataBytes []byte
72
84
var err error
73
85
0 commit comments