nuntius 1.1.4 → 1.2.1

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: 1dadbe5b3ded5dffcb6ceba8c5630fcce1d02905030087f3ac2fe7a5b0e94c0d
4
- data.tar.gz: 909fce72b52db1d9b24c2445a6e13767564f56f633fee205eeb0b8e497ed407f
3
+ metadata.gz: df98bf73de1a269908316bc3ef1f0c9db2c7f574747c2b47bc1dfa56f5c90949
4
+ data.tar.gz: 3e05992c01c3d2318317bd165a0de414fa9fcbcdcb25edf9dee9c49f56676c66
5
5
  SHA512:
6
- metadata.gz: 617adffb4414a45c2eb885666a030225b7338d736ead1960bce4aae499960c4123de259c48bdf04584e033b65809abf1e4cfe076e24c67961508c66ecdaea27b
7
- data.tar.gz: 1b8dba96defc70f262b455bbcd5ae87e5313e96e891910075eede92027c07811e524d1c25b83f0776b649b40e5bc1e11d0a771193069efa7f6bb52328f3d948d
6
+ metadata.gz: c6cf596ea8d983346ba1fe6828b4111789c4f833f7cb3acba07e7b00b40f4f2c6d00a0d8a7de91ba1001369304ae33dd99546f1b62bcc624cf63a326ced6d9fc
7
+ data.tar.gz: 0330aed1bee32f7892f97e9443baceabd6b3b3a6e900e3e84df7f8d7f99c814fa64065e8f153b536b453454aa803910db929d14b31f2f038220b943a99a77398
data/README.md CHANGED
@@ -281,8 +281,10 @@ class BarMessageBox < Nuntius::BaseMessageBox
281
281
  route to: :process
282
282
 
283
283
  def process
284
- puts message.status # Message is Nuntius's inbound message.
285
- puts mail.to
284
+ puts message.status # message is Nuntius's inbound message.
285
+ puts mail.to # mail gives you the Mail representation, when it's a mail (transport)
286
286
  end
287
287
  end
288
288
  ```
289
+
290
+ Add `Nuntius::RetrieveMailJob` to your cron.
data/Rakefile CHANGED
@@ -33,7 +33,3 @@ Rake::TestTask.new(:test) do |t|
33
33
  end
34
34
 
35
35
  task default: :test
36
-
37
- # Adds the Auxilium semver task
38
- spec = Gem::Specification.find_by_name "auxilium"
39
- load "#{spec.gem_dir}/lib/tasks/semver.rake"
@@ -6,6 +6,7 @@ module Nuntius
6
6
 
7
7
  def deliver
8
8
  # NOTE: Attachments are not supported
9
+ # https://adaptivecards.io/designer/
9
10
  # https://learn.microsoft.com/en-us/power-automate/overview-adaptive-cards
10
11
  # https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook?tabs=newteams%2Cdotnet
11
12
 
@@ -13,7 +13,10 @@ module Nuntius
13
13
  inbound_message.digest = Digest::SHA256.hexdigest(message.to_s)
14
14
  inbound_message.from = message.from
15
15
  inbound_message.to = message.to
16
- inbound_message.text = message.body
16
+ inbound_message.cc = message.cc
17
+ inbound_message.text = message.text_part&.decoded
18
+ inbound_message.html = message.html_part&.decoded
19
+ inbound_message.subject = message.subject
17
20
  inbound_message.save!
18
21
 
19
22
  si = StringIO.new
@@ -3,7 +3,8 @@
3
3
  require_relative "nuntiable"
4
4
  require_relative "devise"
5
5
  require_relative "state_machine"
6
- require_relative "transactio"
6
+ require_relative "life_cycle"
7
+ # require_relative "transactio"
7
8
 
8
9
  module Nuntius::ActiveRecordHelpers
9
10
  extend ActiveSupport::Concern
@@ -18,7 +19,7 @@ module Nuntius::ActiveRecordHelpers
18
19
  include Nuntius::Nuntiable
19
20
  include Nuntius::StateMachine if options[:use_state_machine]
20
21
  include Nuntius::Devise if options[:override_devise]
21
- include Nuntius::Transactio
22
+ include Nuntius::LifeCycle if options[:life_cycle]
22
23
  end
23
24
 
24
25
  def nuntiable?
@@ -7,12 +7,13 @@ module Nuntius
7
7
  included do
8
8
  raise "#{name} must be nuntiable" unless nuntiable?
9
9
 
10
- orchestrator = Evento::Orchestrator.new(self)
11
- orchestrator.define_event_methods_on(messenger, devise: true) { |object, options = {}| }
10
+ I18n.t('devise.mailer').keys.map(&:to_s).each do |event_name|
11
+ messenger.send(:define_method, event_name) { |object, options = {}| }
12
+ end
12
13
 
13
- orchestrator.override_devise_notification do |notification, *devise_params|
14
+ define_method(:send_devise_notification) do |notification, *devise_params|
14
15
  # All notifications have either a token as the first param, or nothing
15
- Nuntius.event(notification, self, {token: devise_params.first})
16
+ Nuntius.event(notification, self, { token: devise_params.first })
16
17
  end
17
18
  end
18
19
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "auxilium"
4
- require "evento"
5
4
  require "inky"
6
5
  require "faraday"
7
6
  require "faraday/follow_redirects"
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nuntius
4
+ module LifeCycle
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ raise "#{name} must be nuntiable" unless nuntiable?
9
+
10
+ after_commit do
11
+ if previously_persisted?
12
+ Nuntius.event(:destroy, self)
13
+ elsif previously_new_record?
14
+ Nuntius.event(:create, self)
15
+ Nuntius.event(:save, self)
16
+ else
17
+ Nuntius.event(:update, self)
18
+ Nuntius.event(:save, self)
19
+ end
20
+ end
21
+
22
+ %i[create destroy update save].each do |event_name|
23
+ next if messenger.method_defined?(event_name)
24
+ messenger.send(:define_method, event_name) { |object, options = {}| }
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,18 +1,40 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nuntius
4
+
4
5
  module StateMachine
5
6
  extend ActiveSupport::Concern
6
7
 
7
8
  included do
8
9
  raise "#{name} must be nuntiable" unless nuntiable?
9
10
 
10
- orchestrator = Evento::Orchestrator.new(self)
11
- orchestrator.define_event_methods_on(messenger, state_machine: true) { |object, options = {}| }
11
+ state_machine.events.map(&:name)
12
+ .reject { |event_name| messenger.method_defined?(event_name) }
13
+ .each do |event_name|
14
+ messenger.send(:define_method, event_name) { |object, options = {}| }
15
+ end
16
+
17
+ after_commit do
18
+ Thread.current['___nuntius_state_machine_events']&.each do |event|
19
+ Nuntius.event(event[:event], event[:object])
20
+ end
21
+ # After events are fired we can clear the events
22
+ Thread.current['___nuntius_state_machine_events'] = []
23
+ end
24
+
25
+ state_machine do
26
+ # This records events within the same thread, and clears them in the same thread.
27
+ # A different thread is a different transaction.
28
+ after_transition any => any do |record, transition|
29
+ ___record__nuntius_state_machine_event(transition.event, record)
30
+ ___record__nuntius_state_machine_event(:update, record)
31
+ ___record__nuntius_state_machine_event(:save, record)
32
+ end
12
33
 
13
- orchestrator.after_audit_trail_commit(:nuntius) do |resource_state_transition|
14
- resource = resource_state_transition.resource
15
- Nuntius.event(event, resource) if resource.nuntiable? && event.present?
34
+ def ___record__nuntius_state_machine_event(event, object)
35
+ Thread.current['___nuntius_state_machine_events'] ||= []
36
+ Thread.current['___nuntius_state_machine_events'] << { event: event, object: object }
37
+ end
16
38
  end
17
39
  end
18
40
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nuntius
4
- VERSION = "1.1.4"
4
+ VERSION = "1.2.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nuntius
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom de Grunt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-21 00:00:00.000000000 Z
11
+ date: 2024-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apnotic
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.56'
55
- - !ruby/object:Gem::Dependency
56
- name: evento
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: fcm
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -154,16 +140,16 @@ dependencies:
154
140
  name: labelary
155
141
  requirement: !ruby/object:Gem::Requirement
156
142
  requirements:
157
- - - ">="
143
+ - - "~>"
158
144
  - !ruby/object:Gem::Version
159
- version: '0'
145
+ version: '0.5'
160
146
  type: :runtime
161
147
  prerelease: false
162
148
  version_requirements: !ruby/object:Gem::Requirement
163
149
  requirements:
164
- - - ">="
150
+ - - "~>"
165
151
  - !ruby/object:Gem::Version
166
- version: '0'
152
+ version: '0.5'
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: liquidum
169
155
  requirement: !ruby/object:Gem::Requirement
@@ -238,16 +224,16 @@ dependencies:
238
224
  name: parse-cron
239
225
  requirement: !ruby/object:Gem::Requirement
240
226
  requirements:
241
- - - ">="
227
+ - - "~>"
242
228
  - !ruby/object:Gem::Version
243
- version: '0'
229
+ version: '0.1'
244
230
  type: :runtime
245
231
  prerelease: false
246
232
  version_requirements: !ruby/object:Gem::Requirement
247
233
  requirements:
248
- - - ">="
234
+ - - "~>"
249
235
  - !ruby/object:Gem::Version
250
- version: '0'
236
+ version: '0.1'
251
237
  - !ruby/object:Gem::Dependency
252
238
  name: pg
253
239
  requirement: !ruby/object:Gem::Requirement
@@ -266,16 +252,16 @@ dependencies:
266
252
  name: premailer
267
253
  requirement: !ruby/object:Gem::Requirement
268
254
  requirements:
269
- - - ">="
255
+ - - "~>"
270
256
  - !ruby/object:Gem::Version
271
- version: '0'
257
+ version: '1.23'
272
258
  type: :runtime
273
259
  prerelease: false
274
260
  version_requirements: !ruby/object:Gem::Requirement
275
261
  requirements:
276
- - - ">="
262
+ - - "~>"
277
263
  - !ruby/object:Gem::Version
278
- version: '0'
264
+ version: '1.23'
279
265
  - !ruby/object:Gem::Dependency
280
266
  name: rails
281
267
  requirement: !ruby/object:Gem::Requirement
@@ -551,11 +537,11 @@ files:
551
537
  - lib/nuntius/devise.rb
552
538
  - lib/nuntius/engine.rb
553
539
  - lib/nuntius/i18n_store.rb
540
+ - lib/nuntius/life_cycle.rb
554
541
  - lib/nuntius/liquid/tags/attach_tag.rb
555
542
  - lib/nuntius/mail_allow_list.rb
556
543
  - lib/nuntius/nuntiable.rb
557
544
  - lib/nuntius/state_machine.rb
558
- - lib/nuntius/transactio.rb
559
545
  - lib/nuntius/version.rb
560
546
  - lib/preamble.rb
561
547
  - lib/tasks/nuntius_tasks.rake
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Nuntius
4
- module Transactio
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- raise "#{name} must be nuntiable" unless nuntiable?
9
-
10
- orchestrator = Evento::Orchestrator.new(self)
11
- if nuntiable_options[:life_cycle]
12
- orchestrator.define_event_methods_on(messenger, life_cycle: true) do |object, options = {}|
13
- end
14
- end
15
-
16
- orchestrator = Evento::Orchestrator.new(self)
17
- orchestrator.after_transaction_log_commit(:nuntius) do |transaction_log_entry|
18
- resource = transaction_log_entry.transaction_loggable
19
- event = transaction_log_entry.event
20
-
21
- if resource.present? && event.present? && resource.nuntiable?
22
- params = Nuntius.config.default_params(transaction_log_entry)
23
-
24
- Nuntius.event(event, resource, params)
25
- Nuntius.event("save", resource, params) if %w[create update].include?(event)
26
- end
27
- end
28
- end
29
- end
30
- end