mailhandler 1.0.51 → 1.0.52

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: 7d42c93426c484996cc604a260820c1db617cf9d3e17d3441ac07038f31df9b0
4
- data.tar.gz: afb801fe33b1b317aeb036ec0a9722fccd0a2524ec8ce58333659552ae947ad3
3
+ metadata.gz: c7a197abe40976a389b5ff18bec02184905627083f5e4c75f1822c5040845e29
4
+ data.tar.gz: cf09e5646d042c4ff3837827db41b08c0905f8d3563143258b381bfa1121ad36
5
5
  SHA512:
6
- metadata.gz: 32410e9dfca936b1638ed6f4eff71800ce41f50193d8926dd2d9c5c62620856231c337a05acc9ca0299e5fad8cb1d442d0aae2bd9bba93bb18544c1db1d93f26
7
- data.tar.gz: 2f84617e07cf1ba803bb958c65b5ede2e46ded12bb8f514a219b0366bd8efb2f5051a1e38c324b31cb1b478014d45543f931fcc9abfc6432d0c1e7da8c0e64dd
6
+ metadata.gz: 47dc5ceb61e9f9239c98e4cacca9e840dfd0e659455ce5cee7e6a17f85f5a5f40e33d0b2da9428d32c456b77bd015fc9f12b4dac419c540dfc8f8281283b85f9
7
+ data.tar.gz: 3edc28dced7fe3dbba39964c157120fb1600a9c1662534beef6c98ebec54a1ccddd4f7ac08d2dd994f201e3214293ca86bbb74dffdc066aa7cbc13d145e77ea0
@@ -14,9 +14,32 @@ module MailHandler
14
14
 
15
15
  # sending accessor
16
16
  # @return [Object] - sender for sending emails
17
- def sender(type = :postmark_api)
17
+ #
18
+ # Create a new sender by using code block:
19
+ #
20
+ # MailHandler.sender(:smtp) do |dispatcher|
21
+ # dispatcher.address = address
22
+ # dispatcher.port = port
23
+ # dispatcher.domain = domain
24
+ # dispatcher.username = username
25
+ # dispatcher.password = password
26
+ # dispatcher.use_ssl = use_ssl
27
+ # end
28
+ #
29
+ # or by passing a settings hash:
30
+ #
31
+ # MailHandler.sender(:smtp, {address: 'example.com', port: 25})
32
+ #
33
+ # or by combining blocks and settings hash.
34
+ #
35
+ def sender(type = :postmark_api, settings = {})
18
36
  handler = Handler.new
19
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
+
20
43
  yield(handler.sender.dispatcher) if block_given?
21
44
 
22
45
  handler.sender
@@ -24,11 +47,38 @@ module MailHandler
24
47
 
25
48
  # receiving accessor
26
49
  # @return [Object] - receiver for searching emails
27
- def receiver(type = :folder, notifications = [])
50
+ #
51
+ # Create a new receiver by using code block:
52
+ #
53
+ # address = 'imap.example.com'
54
+ # port = 993
55
+ # username = 'john'
56
+ # password = 'xxxxxxxxxxxxxx'
57
+ # use_ssl = true
58
+ #
59
+ # email_receiver = MailHandler.receiver(:imap) do |checker|
60
+ # checker.address = address
61
+ # checker.port = port
62
+ # checker.username = username
63
+ # checker.password = password
64
+ # checker.use_ssl = use_ssl
65
+ # end
66
+ #
67
+ # or by passing a settings hash:
68
+ #
69
+ # email_receiver = MailHandler.receiver(:imap, {address: 'example.com', port: 993})
70
+ #
71
+ # or by combining blocks and settings hash.
72
+ #
73
+ def receiver(type = :folder, settings = {})
28
74
  handler = Handler.new
29
- handler.init_receiver(type, notifications)
30
- yield(handler.receiver.checker) if block_given?
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
31
80
 
81
+ yield(handler.receiver.checker) if block_given?
32
82
  handler.receiver
33
83
  end
34
84
 
@@ -53,9 +103,10 @@ module MailHandler
53
103
 
54
104
  def init_receiver(type = :folder, notifications = [])
55
105
  verify_type(type, CHECKER_TYPES)
56
- @receiver = MailHandler::Receiver.new(CHECKER_TYPES[type].new)
57
- add_receiving_notifications(@receiver, notifications)
58
- @receiver
106
+ receiver = MailHandler::Receiver.new(CHECKER_TYPES[type].new)
107
+
108
+ add_receiving_notifications(receiver, notifications)
109
+ @receiver = receiver
59
110
  end
60
111
 
61
112
  def handler(sender, receiver)
@@ -73,6 +124,7 @@ module MailHandler
73
124
  # @param [Receiving::Object] receiver
74
125
  # @param [Array<Receiving::Notification::Class>] notifications
75
126
  def add_receiving_notifications(receiver, notifications)
127
+ return if notifications.nil?
76
128
  return unless (notifications - NOTIFICATION_TYPES.keys).empty?
77
129
 
78
130
  notifications.each { |n| receiver.add_observer(NOTIFICATION_TYPES[n].new) }
@@ -11,8 +11,7 @@ module MailHandler
11
11
  :api_token,
12
12
  :use_ssl,
13
13
  :http_open_timeout,
14
- :http_read_timeout,
15
- :client
14
+ :http_read_timeout
16
15
 
17
16
  def initialize(api_token = nil)
18
17
  @type = :postmark_api
@@ -31,6 +30,10 @@ module MailHandler
31
30
  client.deliver_message(email)
32
31
  end
33
32
 
33
+ def client
34
+ init_client
35
+ end
36
+
34
37
  def init_client
35
38
  @client = setup_sending_client
36
39
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MailHandler
4
- VERSION = '1.0.51'
4
+ VERSION = '1.0.52'
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.51
4
+ version: 1.0.52
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-12 00:00:00.000000000 Z
11
+ date: 2020-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  - !ruby/object:Gem::Version
115
115
  version: 1.9.3
116
116
  requirements: []
117
- rubygems_version: 3.0.6
117
+ rubygems_version: 3.1.2
118
118
  signing_key:
119
119
  specification_version: 4
120
120
  summary: Postmark email receiving and sending handler.