Class: Tochtli::MessageSetup

Inherits:
Middleware show all
Defined in:
lib/tochtli/application.rb

Instance Method Summary collapse

Methods inherited from Middleware

#initialize

Constructor Details

This class inherits a constructor from Tochtli::Middleware

Instance Method Details

#call(env) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/tochtli/application.rb', line 66

def call(env)
  controller_class  = env[:controller_class]
  delivery_info     = env[:delivery_info]
  payload           = env[:payload]
  properties        = env[:properties]
  rabbit_connection = env[:rabbit_connection]
  cache             = env[:cache]
  logger            = env[:logger]
  message_route     = controller_class.find_message_route(delivery_info.routing_key)

  if message_route
    env[:message]    = create_message(message_route.message_class, properties, payload)
    env[:controller] = controller_class.new(rabbit_connection, cache, logger)
    env[:action]     = message_route.action

    @app.call(env)

  else
    logger.error "\n\nMessage DROPPED by #{controller_class.name} at #{Time.now}"
    logger.error "\tProperties: #{properties.inspect}."
    logger.error "\tDelivery info: exchange: #{delivery_info[:exchange]}, routing_key: #{delivery_info[:routing_key]}."
    false
  end
end

#create_message(message_class, properties, payload) ⇒ Object



91
92
93
94
95
96
# File 'lib/tochtli/application.rb', line 91

def create_message(message_class, properties, payload)
  message            = message_class.new(nil, properties)
  message.attributes = JSON.parse(payload)
  raise InvalidMessageError.new(message.errors.join(", "), message) if message.invalid?
  message
end