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 +4 -4
- data/lib/tolliver.rb +10 -6
- data/lib/tolliver/jobs/batch_policy_job.rb +19 -0
- data/lib/tolliver/jobs/delivery_job.rb +18 -0
- data/lib/tolliver/models/notification.rb +3 -3
- data/lib/tolliver/services/{delivery.rb → delivery_service.rb} +2 -13
- data/lib/tolliver/services/{notification.rb → notification_service.rb} +3 -3
- data/lib/tolliver/services/policies/batch.rb +7 -15
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bca32cfa7b51b8e6ba8b5869fc08861ddd0baed7391e37896e9790034bf0320b
|
4
|
+
data.tar.gz: 5f5962eaea832be5c87576b930f9d687e3ab7a4ec691eb08b9b5a57cb8e8f5a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47ec923a9b374213a31889efd74ccb5c55928e79aa474b6ebe2243705fd59d8466657e79df765cfe590f7b823177b64bf9ba53a9ea38020a6eca4412ec138bf4
|
7
|
+
data.tar.gz: 23476701f1f3cf159d2c7b30cc28a76007e9d4908caca6d5c94b258a40962ac7df8b94b66eaf12b395dae4c9c428bed50a405ef04386272dfb513ce292a76802
|
data/lib/tolliver.rb
CHANGED
@@ -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/
|
24
|
-
require "tolliver/services/
|
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::
|
59
|
+
Tolliver::Services::NotificationService.instance.notify(options)
|
56
60
|
end
|
57
61
|
|
58
62
|
def self.deliver(notification)
|
59
|
-
Tolliver::Services::
|
63
|
+
Tolliver::Services::DeliveryService.instance.deliver(notification)
|
60
64
|
end
|
61
65
|
|
62
66
|
def self.enqueue_for_delivery(notification)
|
63
|
-
Tolliver::Services::
|
67
|
+
Tolliver::Services::DeliveryService.instance.enqueue_for_delivery(notification)
|
64
68
|
end
|
65
69
|
|
66
70
|
def self.reset_delivery(notification)
|
67
|
-
Tolliver::Services::
|
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::
|
55
|
+
Tolliver::Services::DeliveryService.instance.deliver(self)
|
56
56
|
end
|
57
57
|
|
58
58
|
def enqueue_for_delivery
|
59
|
-
Tolliver::Services::
|
59
|
+
Tolliver::Services::DeliveryService.instance.enqueue_for_delivery(self)
|
60
60
|
end
|
61
61
|
|
62
62
|
def reset_delivery
|
63
|
-
Tolliver::Services::
|
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
|
16
|
+
class DeliveryService
|
17
17
|
include Singleton
|
18
18
|
|
19
19
|
def enqueue_for_delivery(notification)
|
20
20
|
return nil if notification.nil?
|
21
|
-
|
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
|
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
|
102
|
-
raise Tolliver::Errors::BadRequest.new('Missing
|
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
|
23
|
-
|
22
|
+
# Enqueue
|
23
|
+
Tolliver::Jobs::BatchPolicyJob.perform_later(notification_delivery.id, batch_size)
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
def self.deliver(notification_delivery_id, batch_size = 10)
|
26
|
+
def deliver_batch_and_enqueue(notification_delivery, batch_size = 10)
|
28
27
|
|
29
|
-
#
|
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
|
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
|
+
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/
|
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/
|
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
|