Skip to content

Commit a7ce6f7

Browse files
authored
Refactor Trigger/TriggerBatch encoding related functions, filenames and types (#51)
- it refactors Trigger/TriggerBatch encoding logic filename from event.go -> encoder.go - it refactors Trigger/TriggerBatch encoding logic functions names to more meaningful ones. - it changes Trigger/TriggerBatch encoding logic types going from a single source->destination type to one source type and one destination type.
1 parent d5df3cc commit a7ce6f7

File tree

2 files changed

+33
-18
lines changed

2 files changed

+33
-18
lines changed

client.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ func (c *Client) trigger(channels []string, eventName string, data interface{},
190190
if err := validateSocketID(socketID); err != nil {
191191
return nil, err
192192
}
193-
payload, err := createTriggerPayload(channels, eventName, data, socketID, c.EncryptionMasterKey)
193+
payload, err := encodeTriggerBody(channels, eventName, data, socketID, c.EncryptionMasterKey)
194194
if err != nil {
195195
return nil, err
196196
}
@@ -206,8 +206,11 @@ func (c *Client) trigger(channels []string, eventName string, data interface{},
206206
return unmarshalledBufferedEvents(response)
207207
}
208208

209-
type batchRequest struct {
210-
Batch []Event `json:"batch"`
209+
type Event struct {
210+
Channel string
211+
Name string
212+
Data interface{}
213+
SocketId *string
211214
}
212215

213216
/* TriggerBatch triggers multiple events on multiple types of channels in a single call:
@@ -236,7 +239,7 @@ func (c *Client) TriggerBatch(batch []Event) (*BufferedEvents, error) {
236239
return nil, errors.New("Your encryptionMasterKey is not of the correct format")
237240
}
238241
}
239-
payload, err := createTriggerBatchPayload(batch, c.EncryptionMasterKey)
242+
payload, err := encodeTriggerBatchBody(batch, c.EncryptionMasterKey)
240243
if err != nil {
241244
return nil, err
242245
}

event.go renamed to encoder.go

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,14 @@ import (
99
// maxEventPayloadSize indicates the max size allowed for the data content (payload) of each event
1010
const 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

1922
type 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

Comments
 (0)