Class: RackRabbit::Message
- Inherits:
-
Object
- Object
- RackRabbit::Message
- Defined in:
- lib/rack-rabbit/message.rb
Instance Attribute Summary collapse
-
#body ⇒ Object
readonly
————————————————————————–.
-
#content_encoding ⇒ Object
readonly
————————————————————————–.
-
#content_length ⇒ Object
readonly
————————————————————————–.
-
#content_type ⇒ Object
readonly
————————————————————————–.
-
#correlation_id ⇒ Object
readonly
————————————————————————–.
-
#delivery_tag ⇒ Object
readonly
————————————————————————–.
-
#headers ⇒ Object
readonly
————————————————————————–.
-
#method ⇒ Object
readonly
————————————————————————–.
-
#path ⇒ Object
readonly
————————————————————————–.
-
#query ⇒ Object
readonly
————————————————————————–.
-
#rabbit ⇒ Object
readonly
————————————————————————–.
-
#reply_to ⇒ Object
readonly
————————————————————————–.
-
#status ⇒ Object
readonly
————————————————————————–.
-
#uri ⇒ Object
readonly
————————————————————————–.
Instance Method Summary collapse
-
#ack ⇒ Object
————————————————————————–.
- #acknowledged? ⇒ Boolean
-
#get_rack_env(defaults = {}) ⇒ Object
————————————————————————–.
- #get_reply_properties(response, config) ⇒ Object
-
#initialize(delivery_tag, properties, body, rabbit) ⇒ Message
constructor
A new instance of Message.
- #reject ⇒ Object
- #rejected? ⇒ Boolean
-
#should_reply? ⇒ Boolean
————————————————————————–.
Constructor Details
#initialize(delivery_tag, properties, body, rabbit) ⇒ Message
Returns a new instance of Message.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# 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 |
Instance Attribute Details
#body ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def body @body end |
#content_encoding ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def content_encoding @content_encoding end |
#content_length ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def content_length @content_length end |
#content_type ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def content_type @content_type end |
#correlation_id ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def correlation_id @correlation_id end |
#delivery_tag ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def delivery_tag @delivery_tag end |
#headers ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def headers @headers end |
#method ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def method @method end |
#path ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def path @path end |
#query ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def query @query end |
#rabbit ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def rabbit @rabbit end |
#reply_to ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def reply_to @reply_to end |
#status ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def status @status end |
#uri ⇒ Object (readonly)
8 9 10 |
# File 'lib/rack-rabbit/message.rb', line 8 def uri @uri end |
Instance Method Details
#ack ⇒ Object
69 70 71 72 73 74 |
# 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? ⇒ Boolean
83 84 85 |
# File 'lib/rack-rabbit/message.rb', line 83 def acknowledged? @acknowledged == true end |
#get_rack_env(defaults = {}) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# 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) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 |
# 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 ⇒ Object
76 77 78 79 80 81 |
# 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? ⇒ Boolean
87 88 89 |
# File 'lib/rack-rabbit/message.rb', line 87 def rejected? @rejected == true end |
#should_reply? ⇒ Boolean
51 52 53 |
# File 'lib/rack-rabbit/message.rb', line 51 def should_reply? !reply_to.nil? end |