Class: Noticed::BulkDeliveryMethod
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from ApiClient
#post_request
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
11
12
13
|
# File 'lib/noticed/bulk_delivery_method.rb', line 11
def config
@config
end
|
#event ⇒ Object
Returns the value of attribute event.
11
12
13
|
# File 'lib/noticed/bulk_delivery_method.rb', line 11
def event
@event
end
|
Instance Method Details
#deliver ⇒ Object
31
32
33
|
# File 'lib/noticed/bulk_delivery_method.rb', line 31
def deliver
raise NotImplementedError, "Bulk delivery methods must implement the `deliver` method"
end
|
#evaluate_option(name) ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/noticed/bulk_delivery_method.rb', line 40
def evaluate_option(name)
option = config[name]
if option&.respond_to?(:call)
event.instance_exec(&option)
elsif option.is_a?(Symbol) && event.respond_to?(option, true)
event.send(option)
else
option
end
end
|
#fetch_constant(name) ⇒ Object
35
36
37
38
|
# File 'lib/noticed/bulk_delivery_method.rb', line 35
def fetch_constant(name)
option = config[name]
option.is_a?(String) ? option.constantize : evaluate_option(option)
end
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/noticed/bulk_delivery_method.rb', line 13
def perform(delivery_method_name, event, recipient: nil, params: {}, overrides: {})
if event.is_a? String
@event = event.constantize.new_with_params(recipient, params)
@config = overrides
else
@event = event
@config = event.bulk_delivery_methods.fetch(delivery_method_name).config.merge(overrides)
end
return false if config.has_key?(:if) && !evaluate_option(:if)
return false if config.has_key?(:unless) && evaluate_option(:unless)
run_callbacks :deliver do
deliver
end
end
|