Class: Tochtli::MessageSetup
Instance Method Summary
collapse
Methods inherited from Middleware
#initialize
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
|