Class: Envoy::Messenger
- Inherits:
-
Object
show all
- Defined in:
- lib/envoy/messenger.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of Messenger.
7
8
9
10
11
|
# File 'lib/envoy/messenger.rb', line 7
def initialize
self._transports = []
self._messages = []
self._sent_messages = []
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/envoy/messenger.rb', line 64
def method_missing(method, *args)
message = self._messages.select do |message|
message.name.to_s.gsub(' ', '_').downcase == method.to_s.gsub('deliver_', '')
end.first
unless message.nil?
self._transports.each do |transport|
self.deliver_message(transport, message)
end
else
super
end
end
|
Instance Attribute Details
#_messages ⇒ Object
Returns the value of attribute _messages.
5
6
7
|
# File 'lib/envoy/messenger.rb', line 5
def _messages
@_messages
end
|
#_sent_messages ⇒ Object
Returns the value of attribute _sent_messages.
5
6
7
|
# File 'lib/envoy/messenger.rb', line 5
def _sent_messages
@_sent_messages
end
|
#_transports ⇒ Object
Returns the value of attribute _transports.
5
6
7
|
# File 'lib/envoy/messenger.rb', line 5
def _transports
@_transports
end
|
Instance Method Details
#deliver_message(transport, message) ⇒ Object
42
43
44
45
46
47
|
# File 'lib/envoy/messenger.rb', line 42
def deliver_message(transport, message)
unless self._sent_messages.include?({ :transport => transport, :message => message })
response = transport.send_message(message)
self._sent_messages << { :transport => transport, :message => message } if response
end
end
|
#deliver_messages ⇒ Object
Also known as:
deliver_all_messages
33
34
35
36
37
38
39
|
# File 'lib/envoy/messenger.rb', line 33
def deliver_messages
self._messages.each do |message|
self._transports.each do |transport|
self.deliver_message(transport, message)
end
end
end
|
#message(message_options = {}) ⇒ Object
Also known as:
add_message
58
59
60
61
|
# File 'lib/envoy/messenger.rb', line 58
def message(message_options = {})
self._messages << Envoy::Message.new(message_options[:name], message_options[:subject],
message_options[:body], message_options[:options])
end
|
#messages(message_options = {}, &block) ⇒ Object
49
50
51
52
53
54
55
56
|
# File 'lib/envoy/messenger.rb', line 49
def messages(message_options = {}, &block)
if !message_options.empty?
raise ArgumentError if !message_options.is_a?(Hash) and return
self._messages << self.message(message_options)
else
yield self if block_given?
end
end
|
#transport(transport_options = {}) ⇒ Object
Also known as:
add_transport
22
23
24
25
26
27
28
29
30
|
# File 'lib/envoy/messenger.rb', line 22
def transport(transport_options = {})
transport_name = transport_options.delete(:name).to_s.capitalize
begin
transport_instance = Module.const_get("Envoy").const_get(transport_name).new(transport_options)
rescue
raise NoTransportError, "No transport exists for #{transport_name}" and return
end
self._transports << transport_instance
end
|
#transports(transport_options = {}, &block) ⇒ Object
13
14
15
16
17
18
19
20
|
# File 'lib/envoy/messenger.rb', line 13
def transports(transport_options = {}, &block)
if !transport_options.empty?
raise ArgumentError if !transport_options.is_a?(Hash) and return
self._transports << self.transport(transport_options)
else
yield self if block_given?
end
end
|