mail_plugger 1.0.1 → 1.1.0

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: b4dd3655061ce3563a5a47717b4450a24a85d402e9e1b87fc035584be6caf9fc
4
- data.tar.gz: 9dace2ebc237cef9590074e5b25b7a8878cbf3c7ba14af9bf612567fa370cb94
3
+ metadata.gz: 3ae30c8103f7eecb765d0e08984c79c39b116781adebbbc31bb1c56e0aac2273
4
+ data.tar.gz: 3cd75d6aabb8a301f0def36fdfd77f1d624a8c15d7ad60bcc5c60174392e2185
5
5
  SHA512:
6
- metadata.gz: 21092888241af389665f0d5f03341cfed7d13bea5f3f753fedac3c3316e01ac6908bbebc262822f19b70fd14afd2bf485b3b45209ed8505ff1aa794f1473a526
7
- data.tar.gz: 713f8ba5dd65c40f965887dedb2e39618745aec161f69d1ca3a14f710a870d1f7517e617e75c700dcde7dca79ff71ac405ef6d26df328fef1432f0dac1de4485
6
+ metadata.gz: ed702bc39827fbe0afdaa6db1737367fb8bf329aa096dcd1092109673eea45f6fdb1b84a8eb0da0fd8283724ac57f9eae2ae44607a156a6025c6de661aeb0fbf
7
+ data.tar.gz: df3d125a0342d83a0e19802dcfcb3a0ac7f2c682b9de733d2c53cb81da11d6a0f04df828113912eee1f991d8b45cf720e4503f57f494ffcfcf0283895ea86257
@@ -1,28 +1,50 @@
1
1
  # Change log
2
2
 
3
+
4
+ ## 1.1.0 (2021-01-18)
5
+
6
+ ### New features
7
+
8
+ * Add FakePlugger to mock MailPlugger.
9
+
10
+ ### Changes
11
+
12
+ * Fix typos in the documentations.
13
+ * Add more metadata to gempspec file.
14
+
15
+
3
16
  ## 1.0.1 (2021-01-15)
4
17
 
18
+ ### Changes
19
+
5
20
  * Tidy up the gemspec file and change which files contains in the gem. Now the gem is much smaller.
6
21
  * Add a new mail plugger image which has a different canvas and use it in the README.md.
7
22
 
23
+
8
24
  ## 1.0.0 (2021-01-14)
9
25
 
26
+ ### Changes
27
+
10
28
  * Update gems.
11
29
  * Remove `webmock` gem to clean up unused things.
12
30
  * Update documentations.
13
31
 
32
+
14
33
  ## 1.0.0.rc1 (2021-01-13)
15
34
 
35
+ ### Changes
36
+
16
37
  * Change description and fix changelog_uri in gemspec file.
17
38
  * Add/Change documentations.
18
39
  * Update gems.
19
40
  * Change `MailPlugger.plug_in` and `MailPlugger::MailHelper.delivery_options` methods to accept strings and symbols.
20
- * Change `MailPlugger::MailHelper.delivery_data` method that we can retrieve massage object as well.
41
+ * Change `MailPlugger::MailHelper.delivery_data` method that we can retrieve message object as well.
21
42
  * Check hash keys in `MailPlugger::MailHelper.delivery_system` method, so now if we are add wrong `delivey_system` then we are getting a meaningful error message.
22
43
  * Change `MailPlugger::MailHelper.extract_attachments` method. If an attachment is inline then the hash contains the `filename` and `cid` as well.
23
44
  * Add/Change tests.
24
45
  * Change `MailPlugger::MailHelper.delivery_option` that returns with indifferent hash
25
46
 
47
+
26
48
  ## 1.0.0.beta1 (2021-01-02)
27
49
 
28
50
  * Implement MailPlugger methods and functionality. See [README.md](https://github.com/norbertszivos/mail_plugger/blob/main/README.md)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # M<img src="https://raw.githubusercontent.com/norbertszivos/mail_plugger/master/images/mail_plugger800x500.png" height="22" />ilPlugger
1
+ # M<img src="https://raw.githubusercontent.com/norbertszivos/mail_plugger/main/images/mail_plugger800x500.png" height="22" />ilPlugger
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/mail_plugger.svg)](https://badge.fury.io/rb/mail_plugger)
4
4
  [![MIT license](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE.txt)
@@ -31,7 +31,7 @@ Or install it yourself as:
31
31
  - [How to use MailPlugger::DeliveryMethod class](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_delivery_method.md)
32
32
  - [How to use MailPlugger in a Ruby script or IRB console](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_in_script_or_console.md)
33
33
  - [How to use MailPlugger in Ruby on Rails](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_in_ruby_on_rails.md)
34
- - [How to add API specific options to the mailer method in Ruby on Rails](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_secial_options_in_ruby_on_rails.md)
34
+ - [How to add API specific options to the mailer method in Ruby on Rails](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_special_options_in_ruby_on_rails.md)
35
35
  - [How to add attachments to the mailer method in Ruby on Rails](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_attachments_in_ruby_on_rails.md)
36
36
  - [How to use more delivey systems in Ruby on Rails](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_more_delivery_system_in_ruby_on_rails.md)
37
37
  - [How to use one delivey system with more send methods in Ruby on Rails](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_one_delivery_system_with_more_send_methods_in_ruby_on_rails.md)
@@ -42,6 +42,14 @@ Or install it yourself as:
42
42
  - [How to use Postmark with MailPlugger in Ruby on Rails](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_postmark_in_ruby_on_rails.md)
43
43
  - [How to use Mailgun with MailPlugger in Ruby on Rails](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_mailgun_in_ruby_on_rails.md)
44
44
 
45
+ # F<img src="https://raw.githubusercontent.com/norbertszivos/mail_plugger/main/images/fake_plugger800x500.png" height="22" />kePlugger
46
+
47
+ ## Usage
48
+
49
+ - [How to use FakePlugger::DeliveryMethod class](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_fake_plugger_delivery_method.md)
50
+ - [How to use FakePlugger in a Ruby script or IRB console](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_fake_plugger_in_script_or_console.md)
51
+ - [How to use FakePlugger in Ruby on Rails](https://github.com/norbertszivos/mail_plugger/blob/main/docs/usage_of_fake_plugger_in_ruby_on_rails.md)
52
+
45
53
  ## Development
46
54
 
47
55
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FakePlugger
4
+ class DeliveryMethod < MailPlugger::DeliveryMethod
5
+ # Initialize FakePlugger delivery method attributes. If we are using
6
+ # MailPlugger.plug_in method, then these attributes can be nil, if not then
7
+ # we should set these attributes.
8
+ #
9
+ # @param [Hash] options check options below
10
+ # @option options [Class/Hash] client
11
+ # e.g. DefinedApiClientClass or { 'key' => DefinedApiClientClass }
12
+ #
13
+ # @option options [Array/Hash] delivery_options
14
+ # e.g. [:to, :from, :subject, :body] or
15
+ # { 'key' => [:to, :from, :subject, :body] }
16
+ #
17
+ # @option options [Hash] delivery_settings
18
+ # e.g. { return_response: true }
19
+ #
20
+ # @option options [String/Symbol] default_delivery_system
21
+ # e.g. 'defined_api'
22
+ #
23
+ # @option options [Boolean] debug
24
+ # if true it will show debug informations
25
+ #
26
+ # @option options [Boolean] raw_message
27
+ # if true it will show raw message
28
+ #
29
+ # @option options [String/Symbol/Array/Hash] response
30
+ # the deliver! method will return with this value or if this value is nil
31
+ # then it will return with the client object
32
+ def initialize(options = {})
33
+ super
34
+
35
+ @debug = options[:debug] || settings[:fake_plugger_debug] || false
36
+ @raw_message = options[:raw_message] ||
37
+ settings[:fake_plugger_raw_message] || false
38
+ @response = options[:response] || settings[:fake_plugger_response]
39
+ end
40
+
41
+ # Mock send message with the given client if the message parameter is a
42
+ # Mail::Message object. If 'response' parameter is nil then it will extract
43
+ # those information from the Mail::Message object which was provided in the
44
+ # 'delivery_options'. After that it generates a hash with these data and
45
+ # returns with the provided client class which has a 'deliver' method, but
46
+ # it won't call the 'deliver' method.
47
+ # If the 'response' parameter is a hash with 'return_message_obj: true' then
48
+ # it will retrun with the Mail::Message object.
49
+ # If the 'response' parameter is not nil then retruns with that given data
50
+ # without call any other methods.
51
+ # Except if 'debug' is true. In this case it will call those methods which
52
+ # is calling in normal operation as well.
53
+ # If 'debug' is true then it prints out some debug informations.
54
+ # If 'raw_message' is true then it prints out raw message.
55
+ #
56
+ # @param [Mail::Message] message what we would like to send
57
+ #
58
+ # @return [Mail::Message/Hash] depend on give value
59
+ #
60
+ # @example
61
+ #
62
+ # MailPlugger.plug_in('test_api_client') do |api|
63
+ # api.delivery_options = %i[from to subject body]
64
+ # api.delivery_settings = {
65
+ # fake_plugger_debug: true,
66
+ # fake_plugger_raw_message: true,
67
+ # fake_plugger_response: { response: 'OK' }
68
+ # }
69
+ # api.client = DefinedApiClientClass
70
+ # end
71
+ #
72
+ # message = Mail.new(from: 'from@example.com', to: 'to@example.com',
73
+ # subject: 'Test email', body: 'Test email body')
74
+ #
75
+ # FakePlugger::DeliveryMethod.new.deliver!(message)
76
+ #
77
+ # # or
78
+ #
79
+ # message = Mail.new(from: 'from@example.com', to: 'to@example.com',
80
+ # subject: 'Test email', body: 'Test email body')
81
+ #
82
+ # FakePlugger::DeliveryMethod.new(
83
+ # delivery_options: %i[from to subject body],
84
+ # client: DefinedApiClientClass,
85
+ # debug: true,
86
+ # raw_message: true,
87
+ # response: { response: 'OK' }
88
+ # ).deliver!(message)
89
+ #
90
+ def deliver!(message)
91
+ unless message.is_a?(Mail::Message)
92
+ raise MailPlugger::Error::WrongParameter,
93
+ 'The given parameter is not a Mail::Message'
94
+ end
95
+
96
+ @message = message
97
+
98
+ show_debug_info if @debug
99
+ show_raw_message if @raw_message
100
+
101
+ return_with_response
102
+ end
103
+
104
+ private
105
+
106
+ # Return with a response which depends on the conditions.
107
+ def return_with_response
108
+ return client.new(delivery_data) if @response.nil?
109
+ return @message if @response.is_a?(Hash) && @response[:return_message_obj]
110
+
111
+ @response
112
+ end
113
+
114
+ # Show debug informations from variables and methods.
115
+ def show_debug_info
116
+ puts <<~DEBUG_INFO
117
+
118
+ ===================== FakePlugger::DeliveryMethod =====================
119
+
120
+ ------------------------------ Variables ------------------------------
121
+
122
+ ==> @client: #{@client.inspect}
123
+
124
+ ==> @delivery_options: #{@delivery_options.inspect}"
125
+
126
+ ==> @delivery_settings: #{@delivery_settings.inspect}"
127
+
128
+ ==> @default_delivery_system: #{@default_delivery_system.inspect}
129
+
130
+ ==> @message: #{@message.inspect}
131
+
132
+ ------------------------------- Methods -------------------------------
133
+
134
+ ==> client: #{client.inspect}
135
+
136
+ ==> delivery_system: #{delivery_system.inspect}
137
+
138
+ ==> delivery_options: #{delivery_options.inspect}
139
+
140
+ ==> delivery_data: #{delivery_data.inspect}
141
+
142
+ ==> settings: #{settings.inspect}
143
+
144
+ =======================================================================
145
+
146
+ DEBUG_INFO
147
+ end
148
+
149
+ # Show raw message for debug purpose.
150
+ def show_raw_message
151
+ puts <<~RAW_MESSAGE
152
+
153
+ ============================ Mail::Message ============================
154
+
155
+ #{@message}
156
+
157
+ =======================================================================
158
+
159
+ RAW_MESSAGE
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FakePlugger
4
+ class Railtie < Rails::Railtie
5
+ initializer 'fake_plugger.add_delivery_method' do
6
+ ActiveSupport.on_load :action_mailer do
7
+ ActionMailer::Base.add_delivery_method(
8
+ :fake_plugger,
9
+ FakePlugger::DeliveryMethod
10
+ )
11
+ end
12
+ end
13
+ end
14
+ end
@@ -7,6 +7,10 @@ require 'mail_plugger/delivery_method'
7
7
  require 'mail_plugger/railtie' if defined?(Rails)
8
8
  require 'mail_plugger/version'
9
9
 
10
+ require 'fake_plugger/delivery_method'
11
+ # If we are using this gem outside of Rails then do not load this code.
12
+ require 'fake_plugger/railtie' if defined?(Rails)
13
+
10
14
  module MailPlugger
11
15
  class << self
12
16
  attr_reader :client, :delivery_options, :delivery_settings
@@ -17,7 +21,7 @@ module MailPlugger
17
21
  #
18
22
  # @example using Rails `config/initializers/mail_plugger.rb`
19
23
  #
20
- # # The defined API class should have an 'initializer' and a 'deliver'
24
+ # # The defined API class should have an 'initialize' and a 'deliver'
21
25
  # # method.
22
26
  # class DefinedApiClientClass
23
27
  # def initialize(options = {})
@@ -90,6 +94,10 @@ module MailPlugger
90
94
 
91
95
  private
92
96
 
97
+ # Check 'delivery_system' is valid or not. If it's not valid then
98
+ # it will raise an error.
99
+ #
100
+ # @param [String/Symbol] delivery_system the name of the API
93
101
  def check_value(delivery_system)
94
102
  if delivery_system.nil?
95
103
  raise Error::WrongDeliverySystem, '"delivery_system" is nil'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MailPlugger
4
- VERSION = '1.0.1'
4
+ VERSION = '1.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mail_plugger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Norbert Szivós
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-15 00:00:00.000000000 Z
11
+ date: 2021-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail
@@ -37,6 +37,8 @@ files:
37
37
  - CHANGELOG.md
38
38
  - LICENSE.txt
39
39
  - README.md
40
+ - lib/fake_plugger/delivery_method.rb
41
+ - lib/fake_plugger/railtie.rb
40
42
  - lib/mail_plugger.rb
41
43
  - lib/mail_plugger/delivery_method.rb
42
44
  - lib/mail_plugger/error.rb
@@ -50,6 +52,8 @@ metadata:
50
52
  homepage_uri: https://github.com/norbertszivos/mail_plugger
51
53
  source_code_uri: https://github.com/norbertszivos/mail_plugger
52
54
  changelog_uri: https://github.com/norbertszivos/mail_plugger/blob/main/CHANGELOG.md
55
+ bug_tracker_uri: https://github.com/norbertszivos/mail_plugger/issues
56
+ documentation_uri: https://rubydoc.info/gems/mail_plugger
53
57
  post_install_message:
54
58
  rdoc_options: []
55
59
  require_paths: