mailhandler 1.0.52 → 1.0.53

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: 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