class Bricolage::SQSMessage
Constants
- SQS_EVENT_SOURCE
Attributes
delay_seconds[R]
Valid only for sending messages
message_id[R]
Valid only for received messages
name[R]
abstract init_message(**message_params)
receipt_handle[R]
source[R]
time[R]
Public Class Methods
create( name:, time: Time.now.getutc, source: SQS_EVENT_SOURCE, delay_seconds: 0, **message_params)
click to toggle source
Writer interface
# File lib/bricolage/sqsdatasource.rb, line 351 def SQSMessage.create( name:, time: Time.now.getutc, source: SQS_EVENT_SOURCE, delay_seconds: 0, **message_params) new(name: name, time: time, source: source, delay_seconds: delay_seconds, **message_params) end
for_sqs_record(msg, rec)
click to toggle source
abstract SQSMessage.get_concrete_class(msg, rec)
# File lib/bricolage/sqsdatasource.rb, line 370 def SQSMessage.for_sqs_record(msg, rec) new(** SQSMessage.parse_sqs_record(msg, rec).merge(parse_sqs_record(msg, rec))) end
for_sqs_result(result)
click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 360 def SQSMessage.for_sqs_result(result) result.messages.flat_map {|msg| body = JSON.parse(msg.body) records = body['Records'] or next [UnknownSQSMessage.for_sqs_record(msg, nil)] records.map {|rec| get_concrete_class(msg, rec).for_sqs_record(msg, rec) } } end
get_event_time(rec)
click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 384 def SQSMessage.get_event_time(rec) return nil unless rec str = rec['eventTime'] or return nil Time.parse(str) rescue nil end
new(name:, time:, source:, message_id: nil, receipt_handle: nil, delay_seconds: nil, **message_params)
click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 390 def initialize(name:, time:, source:, message_id: nil, receipt_handle: nil, delay_seconds: nil, **message_params) @name = name @time = time @source = source @message_id = message_id @receipt_handle = receipt_handle @delay_seconds = delay_seconds init_message(**message_params) end
parse_sqs_record(msg, rec)
click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 374 def SQSMessage.parse_sqs_record(msg, rec) { message_id: msg.message_id, receipt_handle: msg.receipt_handle, name: (rec ? rec['eventName'] : nil), time: get_event_time(rec), source: (rec ? rec['eventSource'] : nil) } end
Public Instance Methods
body()
click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 420 def body obj = {} [ ['eventName', @name], ['eventTime', (@time ? @time.iso8601 : nil)], ['eventSource', @source] ].each do |name, value| obj[name] = value if value end obj end