Class: Nuntius::BaseMessageBox

Inherits:
Object
  • Object
show all
Defined in:
app/message_boxes/nuntius/base_message_box.rb

Overview

Message boxes process inbound messages

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message) ⇒ BaseMessageBox

Returns a new instance of BaseMessageBox.



71
72
73
# File 'app/message_boxes/nuntius/base_message_box.rb', line 71

def initialize(message)
  @message = message
end

Class Attribute Details

.routesObject (readonly)

Returns the value of attribute routes.



7
8
9
# File 'app/message_boxes/nuntius/base_message_box.rb', line 7

def routes
  @routes
end

Instance Attribute Details

#messageObject (readonly)

Returns the value of attribute message.



69
70
71
# File 'app/message_boxes/nuntius/base_message_box.rb', line 69

def message
  @message
end

Class Method Details

.deliver(message) ⇒ Object



31
32
33
34
35
36
# File 'app/message_boxes/nuntius/base_message_box.rb', line 31

def deliver(message)
  klasses = message_box_for(transport: message.transport.to_sym, provider: message.provider.to_sym)
  klass, method = message_box_for_route(klasses, message.to)

  klass.new(message).send(method) if method
end

.mailObject



45
46
47
48
49
50
# File 'app/message_boxes/nuntius/base_message_box.rb', line 45

def mail
  return nil if transport != 'mail' && provider != 'imap'
  return @mail if @mail

  @mail = Mail.read(inbound_message.raw_message.download)
end

.message_box_for(transport: nil, provider: nil) ⇒ Object



38
39
40
41
42
43
# File 'app/message_boxes/nuntius/base_message_box.rb', line 38

def message_box_for(transport: nil, provider: nil)
  result = descendants
  result = result.select { |message_box| message_box.transport == transport } if transport
  result = result.select { |message_box| message_box.provider == provider } if provider
  result
end

.provider(value = nil) ⇒ Object



9
10
11
12
# File 'app/message_boxes/nuntius/base_message_box.rb', line 9

def provider(value = nil)
  @provider = value.to_sym if value
  @provider
end

.route(mapping = nil) ⇒ Object



19
20
21
22
23
# File 'app/message_boxes/nuntius/base_message_box.rb', line 19

def route(mapping = nil)
  @routes ||= {}
  @routes = @routes.merge(mapping) if mapping.is_a?(Hash)
  @routes
end

.settings(hash = {}) ⇒ Object

Defines the settings



26
27
28
29
# File 'app/message_boxes/nuntius/base_message_box.rb', line 26

def settings(hash = {})
  @settings = hash if hash
  @settings
end

.transport(value = nil) ⇒ Object



14
15
16
17
# File 'app/message_boxes/nuntius/base_message_box.rb', line 14

def transport(value = nil)
  @transport = value.to_sym if value
  @transport
end