action_message_texter 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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