class Liam::MessageProcessor
Attributes
message[R]
Public Class Methods
new(message)
click to toggle source
# File lib/liam/message_processor.rb, line 10 def initialize(message) @message = message end
process(message)
click to toggle source
# File lib/liam/message_processor.rb, line 14 def self.process(message) raise UnexpectedMessageError, message unless message.is_a?(Aws::SQS::Types::Message) Liam.logger.info 'Processing...' new(message).send(:process) end
Private Instance Methods
message_topic_name()
click to toggle source
# File lib/liam/message_processor.rb, line 49 def message_topic_name topic_arn.split(':').last.sub('_', '::').gsub(/(?<=^)(.*)(?=::)/, &:capitalize) end
parsed_body()
click to toggle source
# File lib/liam/message_processor.rb, line 29 def parsed_body JSON.parse(body) end
parsed_message()
click to toggle source
# File lib/liam/message_processor.rb, line 33 def parsed_message JSON.parse(parsed_body['Message']) end
processor()
click to toggle source
# File lib/liam/message_processor.rb, line 37 def processor Object.const_get(message_topic_name).new(parsed_message) rescue NameError => e raise UninitializedMessageProcessorError, e end
topic_arn()
click to toggle source
# File lib/liam/message_processor.rb, line 43 def topic_arn return '' unless parsed_body.is_a?(Hash) parsed_body['TopicArn'] || '' end