tolliver 2.0.1 → 2.1.0

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: 1e7ab72e7ba150c2828de6e3f3defebf06f50bbf09495b9f3bafcc32d4858cf0
4
- data.tar.gz: 4dd7b0a65c105f2f11fcf336675a515d41cac6cc278580fd24951891073b60dc
3
+ metadata.gz: bca32cfa7b51b8e6ba8b5869fc08861ddd0baed7391e37896e9790034bf0320b
4
+ data.tar.gz: 5f5962eaea832be5c87576b930f9d687e3ab7a4ec691eb08b9b5a57cb8e8f5a2
5
5
  SHA512:
6
- metadata.gz: 4c538087c0161c0968e4f2f4fa31c8ce6ad1a54ea1ee0b924b851f81aa537ed631c839cadb0e258b86a5ba24dee3affa2b5b6dc46983c1f5d16960b91cf562a4
7
- data.tar.gz: 05fa597679610a2694f6397992040c4463b9bb9d9458e7f1193431e302c7e2446c67c096838273b5c4fcc42e714f0d53a61d0612abc3a114e6f1ab1b6af06eab
6
+ metadata.gz: 47ec923a9b374213a31889efd74ccb5c55928e79aa474b6ebe2243705fd59d8466657e79df765cfe590f7b823177b64bf9ba53a9ea38020a6eca4412ec138bf4
7
+ data.tar.gz: 23476701f1f3cf159d2c7b30cc28a76007e9d4908caca6d5c94b258a40962ac7df8b94b66eaf12b395dae4c9c428bed50a405ef04386272dfb513ce292a76802
@@ -20,8 +20,8 @@ require "tolliver/models/notification_receiver"
20
20
  require "tolliver/models/notification_template"
21
21
 
22
22
  # Services
23
- require "tolliver/services/notification"
24
- require "tolliver/services/delivery"
23
+ require "tolliver/services/notification_service"
24
+ require "tolliver/services/delivery_service"
25
25
  require "tolliver/services/policies/batch"
26
26
  require "tolliver/services/policies/instantly"
27
27
  require "tolliver/services/methods/email"
@@ -30,6 +30,10 @@ require "tolliver/services/methods/email/mailgun"
30
30
  require "tolliver/services/methods/sms"
31
31
  require "tolliver/services/methods/sms/plivo"
32
32
 
33
+ # Jobs
34
+ require "tolliver/jobs/delivery_job"
35
+ require "tolliver/jobs/batch_policy_job"
36
+
33
37
  # Mailers
34
38
  require "tolliver/mailers/notification_mailer"
35
39
 
@@ -52,19 +56,19 @@ module Tolliver
52
56
  # *************************************************************************
53
57
 
54
58
  def self.notify(options)
55
- Tolliver::Services::Notification.instance.notify(options)
59
+ Tolliver::Services::NotificationService.instance.notify(options)
56
60
  end
57
61
 
58
62
  def self.deliver(notification)
59
- Tolliver::Services::Delivery.instance.deliver(notification)
63
+ Tolliver::Services::DeliveryService.instance.deliver(notification)
60
64
  end
61
65
 
62
66
  def self.enqueue_for_delivery(notification)
63
- Tolliver::Services::Delivery.instance.enqueue_for_delivery(notification)
67
+ Tolliver::Services::DeliveryService.instance.enqueue_for_delivery(notification)
64
68
  end
65
69
 
66
70
  def self.reset_delivery(notification)
67
- Tolliver::Services::Delivery.instance.reset_delivery(notification)
71
+ Tolliver::Services::DeliveryService.instance.reset_delivery(notification)
68
72
  end
69
73
 
70
74
  # *************************************************************************
@@ -0,0 +1,19 @@
1
+ module Tolliver
2
+ module Jobs
3
+ class BatchPolicyJob < ActiveJob::Base
4
+ queue_as :default
5
+
6
+ def perform(notification_delivery_id, batch_size)
7
+
8
+ # Instantiate notification delivery object
9
+ notification_delivery = Tolliver.notification_delivery_model.find_by_id(notification_delivery_id)
10
+ return nil if notification_delivery.nil? || notification_delivery.policy != :batch
11
+
12
+ # Call policy logic
13
+ policy_service = Tolliver::Services::Policies::Batch.new
14
+ policy_service.deliver_batch_and_enqueue(notification_delivery, batch_size)
15
+
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ module Tolliver
2
+ module Jobs
3
+ class DeliveryJob < ActiveJob::Base
4
+ queue_as :default
5
+
6
+ def perform(notification_id)
7
+
8
+ # Instantiate notification object
9
+ notification = Tolliver.notification_model.find_by_id(notification_id)
10
+ return nil if notification.nil?
11
+
12
+ # Call standard API
13
+ Tolliver::Services::DeliveryService.instance.deliver(notification)
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -52,15 +52,15 @@ module Tolliver
52
52
  # ***********************************************************************
53
53
 
54
54
  def deliver
55
- Tolliver::Services::Delivery.instance.deliver(self)
55
+ Tolliver::Services::DeliveryService.instance.deliver(self)
56
56
  end
57
57
 
58
58
  def enqueue_for_delivery
59
- Tolliver::Services::Delivery.instance.enqueue_for_delivery(self)
59
+ Tolliver::Services::DeliveryService.instance.enqueue_for_delivery(self)
60
60
  end
61
61
 
62
62
  def reset_delivery
63
- Tolliver::Services::Delivery.instance.reset_delivery(self)
63
+ Tolliver::Services::DeliveryService.instance.reset_delivery(self)
64
64
  end
65
65
 
66
66
  end
@@ -13,23 +13,12 @@ require 'singleton'
13
13
 
14
14
  module Tolliver
15
15
  module Services
16
- class Delivery
16
+ class DeliveryService
17
17
  include Singleton
18
18
 
19
19
  def enqueue_for_delivery(notification)
20
20
  return nil if notification.nil?
21
- QC.enqueue("#{self.class.to_s}.deliver", notification.id)
22
- end
23
-
24
- # Entry point for QC
25
- def self.deliver(notification_id)
26
-
27
- # Instantiate notification object
28
- notification = Tolliver.notification_model.find_by_id(notification_id)
29
- return nil if notification.nil?
30
-
31
- # Call standard API
32
- self.instance.deliver(notification)
21
+ Tolliver::Jobs::DeliveryJob.perform_later(notification.id)
33
22
  end
34
23
 
35
24
  # Deliver notification to receivers by all configured methods
@@ -13,7 +13,7 @@ require 'singleton'
13
13
 
14
14
  module Tolliver
15
15
  module Services
16
- class Notification
16
+ class NotificationService
17
17
  include Singleton
18
18
 
19
19
  def notify(options)
@@ -98,8 +98,8 @@ module Tolliver
98
98
 
99
99
  # Save to DB
100
100
  filtered_receivers.each do |receiver|
101
- raise Tolliver::Errors::BadRequest.new('Missing sender ref.') if receiver[:ref].blank?
102
- raise Tolliver::Errors::BadRequest.new('Missing sender contact.') if receiver[:contact].blank?
101
+ raise Tolliver::Errors::BadRequest.new('Missing receiver ref.') if receiver[:ref].blank?
102
+ raise Tolliver::Errors::BadRequest.new('Missing receiver contact.') if receiver[:contact].blank?
103
103
  notification_delivery.notification_receivers.create(receiver_ref: receiver[:ref], receiver_contact: receiver[:contact])
104
104
  end
105
105
  notification_delivery.sent_count = 0
@@ -19,26 +19,15 @@ module Tolliver
19
19
  # Input validation
20
20
  return nil if notification_delivery.nil? || notification_delivery.policy != :batch
21
21
 
22
- # Enqueue in QC
23
- QC.enqueue("#{self.class.to_s}.deliver", notification_delivery.id, batch_size)
22
+ # Enqueue
23
+ Tolliver::Jobs::BatchPolicyJob.perform_later(notification_delivery.id, batch_size)
24
24
  end
25
25
 
26
- # Entry point for QC
27
- def self.deliver(notification_delivery_id, batch_size = 10)
26
+ def deliver_batch_and_enqueue(notification_delivery, batch_size = 10)
28
27
 
29
- # Instantiate notification delivery object
30
- notification_delivery = Tolliver.notification_delivery_model.find_by_id(notification_delivery_id)
28
+ # Input validation
31
29
  return nil if notification_delivery.nil? || notification_delivery.policy != :batch
32
30
 
33
- # Call internal logic
34
- policy_service = self.new
35
- policy_service.send(:deliver_batch_and_enqueue, notification_delivery, batch_size)
36
- end
37
-
38
- protected
39
-
40
- def deliver_batch_and_enqueue(notification_delivery, batch_size = 10)
41
-
42
31
  # Send single batch
43
32
  remaining = deliver_batch(notification_delivery, batch_size)
44
33
 
@@ -59,6 +48,9 @@ module Tolliver
59
48
 
60
49
  def deliver_batch(notification_delivery, batch_size = 10)
61
50
 
51
+ # Input validation
52
+ return nil if notification_delivery.nil? || notification_delivery.policy != :batch
53
+
62
54
  # Nothing to do
63
55
  return 0 if notification_delivery.sent_count == notification_delivery.receivers_count
64
56
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tolliver
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matěj Outlý
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-03 00:00:00.000000000 Z
11
+ date: 2020-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -55,19 +55,21 @@ files:
55
55
  - lib/tolliver/errors/bad_request.rb
56
56
  - lib/tolliver/errors/not_found.rb
57
57
  - lib/tolliver/errors/standard_error.rb
58
+ - lib/tolliver/jobs/batch_policy_job.rb
59
+ - lib/tolliver/jobs/delivery_job.rb
58
60
  - lib/tolliver/mailers/notification_mailer.rb
59
61
  - lib/tolliver/models/notification.rb
60
62
  - lib/tolliver/models/notification_attachment.rb
61
63
  - lib/tolliver/models/notification_delivery.rb
62
64
  - lib/tolliver/models/notification_receiver.rb
63
65
  - lib/tolliver/models/notification_template.rb
64
- - lib/tolliver/services/delivery.rb
66
+ - lib/tolliver/services/delivery_service.rb
65
67
  - lib/tolliver/services/methods/email.rb
66
68
  - lib/tolliver/services/methods/email/mailgun.rb
67
69
  - lib/tolliver/services/methods/email/smtp.rb
68
70
  - lib/tolliver/services/methods/sms.rb
69
71
  - lib/tolliver/services/methods/sms/plivo.rb
70
- - lib/tolliver/services/notification.rb
72
+ - lib/tolliver/services/notification_service.rb
71
73
  - lib/tolliver/services/policies/batch.rb
72
74
  - lib/tolliver/services/policies/instantly.rb
73
75
  - lib/tolliver/utils/enum.rb