diff --git a/cloudflare/queues/batchmessage.go b/cloudflare/queues/batchmessage.go index df165d0..f31462d 100644 --- a/cloudflare/queues/batchmessage.go +++ b/cloudflare/queues/batchmessage.go @@ -8,13 +8,31 @@ import ( ) type BatchMessage struct { - body any + body js.Value options *sendOptions } -// NewBatchMessage creates a single message to be batched before sending to a queue. -func NewBatchMessage(body any, opts ...SendOption) *BatchMessage { - options := defaultSendOptions() +func NewTextBatchMessage(content string, opts ...SendOption) *BatchMessage { + return newBatchMessage(js.ValueOf(content), contentTypeText, opts...) +} + +func NewBytesBatchMessage(content []byte, opts ...SendOption) *BatchMessage { + return newBatchMessage(js.ValueOf(content), contentTypeBytes, opts...) +} + +func NewJSONBatchMessage(content any, opts ...SendOption) *BatchMessage { + return newBatchMessage(js.ValueOf(content), contentTypeJSON, opts...) +} + +func NewV8BatchMessage(content js.Value, opts ...SendOption) *BatchMessage { + return newBatchMessage(content, contentTypeV8, opts...) +} + +// newBatchMessage creates a single message to be batched before sending to a queue. +func newBatchMessage(body js.Value, contentType contentType, opts ...SendOption) *BatchMessage { + options := &sendOptions{ + ContentType: contentType, + } for _, opt := range opts { opt(options) } @@ -26,13 +44,8 @@ func (m *BatchMessage) toJS() (js.Value, error) { return js.Undefined(), errors.New("message is nil") } - jsValue, err := m.options.ContentType.mapValue(m.body) - if err != nil { - return js.Undefined(), err - } - obj := jsutil.NewObject() - obj.Set("body", jsValue) + obj.Set("body", m.body) obj.Set("options", m.options.toJS()) return obj, nil