Class: ActionMessageTexter::Base

Inherits:
AbstractController::Base
  • Object
show all
Includes:
AbstractController::Caching, AbstractController::Callbacks, AbstractController::Logger, AbstractController::Translation, DeliveryMethods, Rescuable
Defined in:
lib/action_message_texter/base.rb

Defined Under Namespace

Classes: NullMessage

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DeliveryMethods

#wrap_delivery_behavior!

Methods included from Rescuable

#handle_exceptions

Constructor Details

#initializeBase

Returns a new instance of Base.



56
57
58
59
60
# File 'lib/action_message_texter/base.rb', line 56

def initialize
  super()
  @_message_was_called = false
  @_message = Message.new
end

Class Attribute Details

.texter_nameObject



26
27
28
# File 'lib/action_message_texter/base.rb', line 26

def texter_name
  @texter_name ||= anonymous? ? 'anonymous' : name.underscore
end

Class Method Details

.default(value) ⇒ Object Also known as: default_options=



18
19
20
21
# File 'lib/action_message_texter/base.rb', line 18

def default(value)
  self.default_params = default_params.merge(value).freeze if value
  default_params
end

.deliver_message(message) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/action_message_texter/base.rb', line 31

def deliver_message(message)
  # Notification
  ActiveSupport::Notifications.instrument('deliver.action_message_texter') do |payload|
    payload[:content] = message.content
    payload[:to] = message.to
    payload[:deliver_at] = message.deliver_at || Time.now
    payload[:texter] = name
    yield # Let Message do the delivery actions
  end
end

Instance Method Details

#process(method_name, *args) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/action_message_texter/base.rb', line 62

def process(method_name, *args)
  payload = {
    messenger: self.class.name,
    action: method_name,
    args: args
  }

  # Notification
  ActiveSupport::Notifications.instrument('process.action_message_texter', payload) do
    super
    @_message = NullMessage.new unless @_message_was_called
  end
end

#sms(headers = {}) ⇒ Object

return Message instance



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/action_message_texter/base.rb', line 80

def sms(headers = {})
  @_message_was_called = true

  headers = self.class.default_params.merge(headers)

  message.content = render_content(headers)

  message.to = recipient(headers)

  message.deliver_at = headers.delete(:at)

  message.other_options = headers

  # TODO: set provider dynamic
  wrap_delivery_behavior!(:base)

  message
end