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