mailhandler 1.0.52 → 1.0.53

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: c7a197abe40976a389b5ff18bec02184905627083f5e4c75f1822c5040845e29
4
- data.tar.gz: cf09e5646d042c4ff3837827db41b08c0905f8d3563143258b381bfa1121ad36
3
+ metadata.gz: ada1ede9480ecca3ccdd3e20a3cde4a572862fc4c92df3085d0e7ad3b4ee706b
4
+ data.tar.gz: b5766d76b779a52c8f17ffe16af6aa85339079fa5ec2c62987436b7f3f78ff33
5
5
  SHA512:
6
- metadata.gz: 47dc5ceb61e9f9239c98e4cacca9e840dfd0e659455ce5cee7e6a17f85f5a5f40e33d0b2da9428d32c456b77bd015fc9f12b4dac419c540dfc8f8281283b85f9
7
- data.tar.gz: 3edc28dced7fe3dbba39964c157120fb1600a9c1662534beef6c98ebec54a1ccddd4f7ac08d2dd994f201e3214293ca86bbb74dffdc066aa7cbc13d145e77ea0
6
+ metadata.gz: ccf98235acb4d8e5006eeefc75bf79e0e503dca6ce642a7375ab65c343b61f78b8969f4a03c92dc44e8d0fdb3eed4ef081e5765f51c33cb6263e205d08e8d2b2
7
+ data.tar.gz: 0e094b8e7a768a5c9696ff27d32d8d0a8fce5737da69708909c2724059d1d6eecdf9e5e1b6b9b84f4026ea30d1834515fa9208d4aac4cdca913cb5377a80b33a
@@ -34,12 +34,7 @@ module MailHandler
34
34
  #
35
35
  def sender(type = :postmark_api, settings = {})
36
36
  handler = Handler.new
37
- handler.init_sender(type)
38
-
39
- settings.each do |setting_name, setting_value|
40
- handler.sender.dispatcher.instance_variable_set("@#{setting_name}", setting_value)
41
- end
42
-
37
+ handler.init_sender(type, settings)
43
38
  yield(handler.sender.dispatcher) if block_given?
44
39
 
45
40
  handler.sender
@@ -72,12 +67,7 @@ module MailHandler
72
67
  #
73
68
  def receiver(type = :folder, settings = {})
74
69
  handler = Handler.new
75
- handler.init_receiver(type, settings[:notifications])
76
-
77
- settings.each do |setting_name, setting_value|
78
- handler.receiver.checker.instance_variable_set("@#{setting_name}", setting_value)
79
- end
80
-
70
+ handler.init_receiver(type, settings)
81
71
  yield(handler.receiver.checker) if block_given?
82
72
  handler.receiver
83
73
  end
@@ -96,16 +86,26 @@ module MailHandler
96
86
  attr_accessor :sender,
97
87
  :receiver
98
88
 
99
- def init_sender(type = :postmark_api)
89
+ def init_sender(type = :postmark_api, settings = {})
100
90
  verify_type(type, SENDER_TYPES)
101
91
  @sender = MailHandler::Sender.new(SENDER_TYPES[type].new)
92
+
93
+ settings.each do |setting_name, setting_value|
94
+ @sender.dispatcher.instance_variable_set("@#{setting_name}", setting_value)
95
+ end
96
+
97
+ @sender
102
98
  end
103
99
 
104
- def init_receiver(type = :folder, notifications = [])
100
+ def init_receiver(type = :folder, settings = {})
105
101
  verify_type(type, CHECKER_TYPES)
106
102
  receiver = MailHandler::Receiver.new(CHECKER_TYPES[type].new)
107
103
 
108
- add_receiving_notifications(receiver, notifications)
104
+ settings.each do |setting_name, setting_value|
105
+ receiver.checker.instance_variable_set("@#{setting_name}", setting_value)
106
+ end
107
+
108
+ add_receiving_notifications(receiver, settings[:notifications])
109
109
  @receiver = receiver
110
110
  end
111
111
 
@@ -90,7 +90,7 @@ module MailHandler
90
90
 
91
91
  count = options[:count]
92
92
  error_message = "Incorrect option options[:count]=#{options[:count]}."
93
- raise MailHandler::Error, error_message if (count <0) || (count > 2000)
93
+ raise MailHandler::Error, error_message if (count < 0) || (count > 2000)
94
94
  end
95
95
 
96
96
  def validate_used_options(options)
@@ -8,7 +8,8 @@ module MailHandler
8
8
  # Class for sending email, and storing details about the sending.
9
9
  class Sender
10
10
  attr_accessor :dispatcher,
11
- :sending
11
+ :sending,
12
+ :validate_response
12
13
 
13
14
  # @param [Time] - sending started at Time
14
15
  # @param [Time] - sending finished at Time
@@ -21,13 +22,14 @@ module MailHandler
21
22
  def initialize(dispatcher)
22
23
  @dispatcher = dispatcher
23
24
  @sending = Sending.new
25
+ @validate_response = false
24
26
  end
25
27
 
26
28
  def send_email(email)
27
29
  init_sending_details(email)
28
30
  response = dispatcher.send(email)
29
31
  update_sending_details(response)
30
-
32
+ check_response(response)
31
33
  response
32
34
  end
33
35
 
@@ -37,6 +39,13 @@ module MailHandler
37
39
 
38
40
  private
39
41
 
42
+ def check_response(response)
43
+ return unless validate_response
44
+ return if dispatcher.valid_response?(response)
45
+
46
+ raise "Invalid sending response: #{response}"
47
+ end
48
+
40
49
  def init_sending_details(email)
41
50
  @sending = Sending.new
42
51
  @sending.started_at = Time.now
@@ -45,6 +45,18 @@ module MailHandler
45
45
  host: host, secure: @use_ssl)
46
46
  end
47
47
 
48
+ def formatted_response(response)
49
+ return if response.keys.select { |key| key.is_a? Symbol }.empty?
50
+ return unless response.is_a? Hash
51
+
52
+ response.keys.select { |key| key.is_a? String }.each { |s| response.delete(s) }
53
+ response
54
+ end
55
+
56
+ def valid_response?(response)
57
+ response[:message].to_s.strip.downcase == 'ok' && response[:error_code].to_s.downcase == '0'
58
+ end
59
+
48
60
  DEFAULTS = {
49
61
  host: 'api.postmarkapp.com',
50
62
  read_timeout: 15,
@@ -17,6 +17,10 @@ module MailHandler
17
17
  client.deliver_messages(emails)
18
18
  end
19
19
 
20
+ def valid_response?(responses)
21
+ responses.map { |response| super(response) }.all?(true)
22
+ end
23
+
20
24
  protected
21
25
 
22
26
  def verify_email(emails)
@@ -13,6 +13,10 @@ module MailHandler
13
13
  raise MailHandler::InterfaceError, 'Send interface not implemented.'
14
14
  end
15
15
 
16
+ def valid_response?(_response)
17
+ raise MailHandler::InterfaceError, 'Method not implemented.'
18
+ end
19
+
16
20
  protected
17
21
 
18
22
  def verify_email(email)
@@ -42,6 +42,10 @@ module MailHandler
42
42
  save_response ? response : nil
43
43
  end
44
44
 
45
+ def valid_response?(response)
46
+ response.string.to_s.downcase.include?('250 2.0.0 ok')
47
+ end
48
+
45
49
  private
46
50
 
47
51
  def init_net_smtp
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MailHandler
4
- VERSION = '1.0.52'
4
+ VERSION = '1.0.53'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailhandler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.52
4
+ version: 1.0.53
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Balos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-16 00:00:00.000000000 Z
11
+ date: 2020-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail