class RackRabbit::Message
Attributes
body[R]
content_encoding[R]
content_length[R]
content_type[R]
correlation_id[R]
delivery_tag[R]
headers[R]
method[R]
path[R]
query[R]
rabbit[R]
reply_to[R]
status[R]
uri[R]
Public Class Methods
new(delivery_tag, properties, body, rabbit)
click to toggle source
# File lib/rack-rabbit/message.rb, line 14 def initialize(delivery_tag, properties, body, rabbit) @delivery_tag = delivery_tag @reply_to = properties.reply_to @correlation_id = properties.correlation_id @body = body @headers = properties.headers || {} @method = headers.delete(RackRabbit::HEADER::METHOD) || :GET @uri = headers.delete(RackRabbit::HEADER::PATH) || "" @status = headers.delete(RackRabbit::HEADER::STATUS) @path, @query = uri.split(/\?/) @content_type = properties.content_type @content_encoding = properties.content_encoding @content_length = body.nil? ? 0 : body.length @rabbit = rabbit @acknowledged = nil @rejected = nil end
Public Instance Methods
ack()
click to toggle source
# File lib/rack-rabbit/message.rb, line 69 def ack raise RuntimeError, "already acknowledged" if acknowledged? raise RuntimeError, "already rejected" if rejected? @acknowledged = true rabbit.ack(delivery_tag) end
acknowledged?()
click to toggle source
# File lib/rack-rabbit/message.rb, line 83 def acknowledged? @acknowledged == true end
get_rack_env(defaults = {})
click to toggle source
# File lib/rack-rabbit/message.rb, line 34 def get_rack_env(defaults = {}) defaults.merge({ 'rabbit.message' => self, 'rack.input' => StringIO.new(body || ""), 'REQUEST_METHOD' => method, 'REQUEST_PATH' => uri, 'PATH_INFO' => path, 'QUERY_STRING' => query, 'CONTENT_TYPE' => "#{content_type || 'text/plain'}; charset=\"#{content_encoding || 'utf-8'}\"", 'CONTENT_LENGTH' => content_length }).merge(headers) end
get_reply_properties(response, config)
click to toggle source
# File lib/rack-rabbit/message.rb, line 55 def get_reply_properties(response, config) return { :app_id => config.app_id, :routing_key => reply_to, :correlation_id => correlation_id, :timestamp => Time.now.to_i, :headers => response.headers.merge(RackRabbit::HEADER::STATUS => response.status), :content_type => response.headers[RackRabbit::HEADER::CONTENT_TYPE], :content_encoding => response.headers[RackRabbit::HEADER::CONTENT_ENCODING] } end
reject()
click to toggle source
# File lib/rack-rabbit/message.rb, line 76 def reject raise RuntimeError, "already acknowledged" if acknowledged? raise RuntimeError, "already rejected" if rejected? @rejected = true rabbit.reject(delivery_tag) end
rejected?()
click to toggle source
# File lib/rack-rabbit/message.rb, line 87 def rejected? @rejected == true end
should_reply?()
click to toggle source
# File lib/rack-rabbit/message.rb, line 51 def should_reply? !reply_to.nil? end