action_message_texter 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 418d237614df105fbe6d8db3eac9d55f39fa47df7af9f3d5e8d5005f13cd01ad
4
- data.tar.gz: 8dbb68f1a1c49ced73009e7048b80c5fae43ed549c5dc715b6708d75376a3032
3
+ metadata.gz: bd00de826d0db8e13aaf8b49e914d530c89582e4f0ec99a4b9353f465f0e5e9d
4
+ data.tar.gz: 6f0a2f3321cfed58a7d3106670b7f253aaaf0f26774b3a43c2382003e0f401ac
5
5
  SHA512:
6
- metadata.gz: 8ad6272e3adfc820e9013a8b91eebd3b27a274b5166ef62d2bd0f517b3250425ce1b86a91080af2caf7b48be4fb7528cbbd8e287496f570fce42a79690f4231e
7
- data.tar.gz: d9be7429496074192beca768b918b323f8c78a1bc44a75b9fabae13855f6c7f00286d27ea476ae1e6cca655b6a714d36cedaccd72c5ffa294e7c0f83e13fdb11
6
+ metadata.gz: 475cb10cc05e0910b526d56dca462015bbbcac58e0fe92a34f6bf94b208bbf417ba6111680d22fb98947918420669ba6fca46e203d3a5e4ac56be86192a820d1
7
+ data.tar.gz: 752ad19afd9068de50573f49909104c2ada1999baed798805d60393ad55e272dd4790af266a2e8e47244ee0d7c37611796f08e7aff1f2e820e9ba7d33b2c06fb
@@ -15,6 +15,10 @@ module ActionMessageTexter
15
15
  }
16
16
 
17
17
  class << self
18
+ def register_observer(observer)
19
+ Message.register_observer(observer_class_for(observer))
20
+ end
21
+
18
22
  def default(value)
19
23
  self.default_params = default_params.merge(value).freeze if value
20
24
  default_params
@@ -49,6 +53,15 @@ module ActionMessageTexter
49
53
  super
50
54
  end
51
55
  end
56
+
57
+ def observer_class_for(value)
58
+ case value
59
+ when String, Symbol
60
+ value.to_s.camelize.constantize
61
+ else
62
+ value
63
+ end
64
+ end
52
65
  end
53
66
 
54
67
  attr_internal :message
@@ -90,8 +103,7 @@ module ActionMessageTexter
90
103
 
91
104
  message.other_options = headers
92
105
 
93
- # TODO: set provider dynamic
94
- wrap_delivery_behavior!(:base)
106
+ wrap_delivery_behavior!(self.class.delivery_method)
95
107
 
96
108
  message
97
109
  end
@@ -1,14 +1,28 @@
1
1
  module ActionMessageTexter
2
2
  class Message
3
+ class << self
4
+ @@delivery_notification_observers = []
5
+ @@delivery_interceptors = []
6
+ def register_observer(observer)
7
+ @@delivery_notification_observers << observer unless @@delivery_notification_observers.include?(observer)
8
+ end
9
+
10
+ def unregister_observer(observer)
11
+ @@delivery_notification_observers.delete(observer)
12
+ end
13
+ end
3
14
  attr_accessor :content, :to, :deliver_at, :delivery_options, :delivery_handler, :other_options,
4
- :raise_delivery_errors
15
+ :raise_delivery_errors, :response
5
16
 
6
17
  attr_writer :delivery_method
7
18
 
19
+ attr_reader :uuid
20
+
8
21
  # TODO: create registred interceptor and observer
9
22
 
10
23
  def initialize
11
24
  @raise_delivery_errors = true
25
+ @uuid = SecureRandom.uuid
12
26
  end
13
27
 
14
28
  def deliver
@@ -18,21 +32,28 @@ module ActionMessageTexter
18
32
  else
19
33
  do_delivery
20
34
  end
21
- # inform_observers
22
- self
35
+ inform_observers
36
+ response
23
37
  end
24
38
 
25
- def delivery_method(method = nil, _settings = {})
26
- if method
39
+ def delivery_method(method_klass = nil, settings = {})
40
+ puts method_klass
41
+ if method_klass
27
42
  # TODO: get provider from configuration
28
- @delivery_method = SMSProvider::Base.new
43
+ @@delivery_method = method_klass.new(settings)
29
44
  else
30
- @delivery_method
45
+ @@delivery_method
31
46
  end
32
47
  end
33
48
 
34
49
  private
35
50
 
51
+ def inform_observers
52
+ @@delivery_notification_observers.each do |observer|
53
+ observer.delivered_message(self)
54
+ end
55
+ end
56
+
36
57
  def do_delivery
37
58
  delivery_method.deliver!(self)
38
59
  rescue StandardError => e
@@ -1,3 +1,3 @@
1
1
  module ActionMessageTexter
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -1,5 +1,9 @@
1
1
  module SMSProvider
2
2
  class Base
3
+ def initialize(*setting)
4
+ puts setting
5
+ end
6
+
3
7
  def deliver!(message)
4
8
  puts message
5
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_message_texter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arthur Li
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-26 00:00:00.000000000 Z
11
+ date: 2022-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails