sanitize_email 2.0.4 → 2.0.5

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: d3ded29cb641327aee8c303ec9eb805fac032b68d3d82b7791e542c03577f05d
4
- data.tar.gz: 97ee5eb56dd5b88498c2e9e9054609960927453ce52b8740113380b2935208d8
3
+ metadata.gz: 1d655a119fcfed21733da3b6d086904bed64ee290930b63cd2ef36c7f918e882
4
+ data.tar.gz: '08de77ba87e5f93b0096b3646aa7512dee49ada51b4972b68dc3ca37c700109a'
5
5
  SHA512:
6
- metadata.gz: 21b23105d986537545b5c99738843dd7f16ff84626b6bffdb8870d6f479020084944abd1a4907ccf0eb9db07e3d37ae8756284bb223178f55ee0585ef041609f
7
- data.tar.gz: 94c2a2944691dcced263a0db6d1af7c17d2e36d64820c90512938b642f247c299831c0be35ff5c7827b1c87ecbfd212052dcc22f119c5cdc70f037baea247bf4
6
+ metadata.gz: 8304c15db70e464ad886a752b91d3b60444e36b8865f62442fe642eb687afea0ea00741e685537b1d3bd87cd50f70501a5890de0b946dbae2e50ce5c9dcc7b94
7
+ data.tar.gz: 1c693f4d770f5517e4b904e73edcd814a71b2ab6e4fa96fc1eff734d9d0db0246a64282257cf16eeb69d68b46980cb149cce9e27fae5635e60ab0cb8a51e856e
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -10,8 +10,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
10
10
  ### Fixed
11
11
  ### Removed
12
12
 
13
+ ## [2.0.5] - 2024-04-18 ([tag][2.0.5t])
14
+ ### Added
15
+ * New RSpec matcher (@pboling)
16
+ * `have_bcc_username`
17
+ * Feature #21 - environment configuration option can now be set to proc / lambda / #call (@pboling)
18
+ * Documentation of all configuration options in README.md (@pboling)
19
+ * Many more tests
20
+ * Confirmed compatibility with [`sendgrid-actionmailer`](https://github.com/eddiezane/sendgrid-actionmailer)
21
+ * Code coverage up to 90%
22
+ ### Changed
23
+ * Averted deprecation warnings when using Rails 6 (@pboling)
24
+ ## Fixed
25
+ * Bug #37 - Unable to send email when only CC or BCC present
26
+
13
27
  ## [2.0.4] - 2024-03-22 ([tag][2.0.4t])
14
28
  ### Added
29
+ * [#74](https://github.com/pboling/sanitize_email/pull/74) Support sanitizing SendGrid personalization fields (@joeyparis)
15
30
  * mail gem dependency (@pboling)
16
31
  * version_gem dependency (@pboling)
17
32
  * new RSpec Matchers (@pboling)
data/README.md CHANGED
@@ -61,6 +61,15 @@ testing your email in the aforementioned `mailcatcher` may not be enough.
61
61
  If you want to test all the way through Paubox's system, but have the email go to a safe testing account address,
62
62
  then this is the gem for you.
63
63
 
64
+ ## Compatibility
65
+
66
+ ⚙️ Compatible with all versions of Ruby >= 2.3.
67
+ ⚙️ Compatible with all Ruby web Frameworks (Hanami, Roda, Sinatra, Rails).
68
+ ⚙️ Compatible with all versions of Rails from 3.0 - 7.1+.
69
+ ⚙️ Compatible with scripted usage of Mail gem outside a web framework.
70
+ ⚙️ Compatible with [`sendgrid-actionmailer`](https://github.com/eddiezane/sendgrid-actionmailer)'s support for personalizations, and will override email addresses there according to the configuration.
71
+ ⚙️ If this gem is not compatible with your use case, and you'd like it to be, I'd like to hear about it!
72
+
64
73
  ## 🛞 DVCS
65
74
 
66
75
  This project does not trust any one version control system,
@@ -116,7 +125,7 @@ appended indicators:
116
125
  | 4️⃣ | testing | [![Supported][🏘sup-wf-img]][🏘sup-wf] [![Heads][🚎heads-wf-img]][🚎heads-wf] |
117
126
  | 5️⃣ | coverage & security | [![CodeClimate][🔑cc-covi]][🔑cc-cov] [![CodeCov][🖇codecov-img♻️]][🖇codecov] [![Coveralls][🏘coveralls-img]][🏘coveralls] [![Security Policy][🚎sec-pol-img]][🚎sec-pol] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Code Coverage][🧮cov-wf-img]][🧮cov-wf] |
118
127
  | 6️⃣ | resources | [![Get help on Codementor][🖇codementor-img]][🖇codementor] [![Chat][🏘chat-img]][🏘chat] [![Blog][🚎blog-img]][🚎blog] [![Wiki][🖐wiki-img]][🖐wiki] |
119
- | 7️⃣ | ... 💖 | [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Sponsor Me][🖇sponsor-img]][🖇sponsor] [![Follow Me on LinkedIn][🖇linkedin-img]][🖇linkedin] [![Find Me on WellFound:][✌️wellfound-img]][✌️wellfound] [![Find Me on CrunchBase][💲crunchbase-img]][💲crunchbase] [![My LinkTree][🌳linktree-img]][🌳linktree] [![Follow Me on Ruby.Social][🐘ruby-mast-img]][🐘ruby-mast] [![Follow Me on FLOSS.Social][🐘floss-mast-img]][🐘floss-mast] [![Follow Me on Mastodon.Social][🐘mast-img]][🐘mast] [![Tweet @ Peter][🐦tweet-img]][🐦tweet] [💻][coderme] [🌏][aboutme] |
128
+ | 7️⃣ | `...` 💖 | [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Sponsor Me][🖇sponsor-img]][🖇sponsor] [![Follow Me on LinkedIn][🖇linkedin-img]][🖇linkedin] [![Find Me on WellFound:][✌️wellfound-img]][✌️wellfound] [![Find Me on CrunchBase][💲crunchbase-img]][💲crunchbase] [![My LinkTree][🌳linktree-img]][🌳linktree] [![Follow Me on Ruby.Social][🐘ruby-mast-img]][🐘ruby-mast] [![Follow Me on FLOSS.Social][🐘floss-mast-img]][🐘floss-mast] [![Follow Me on Mastodon.Social][🐘mast-img]][🐘mast] [![Tweet @ Peter][🐦tweet-img]][🐦tweet] [💻][coderme] [🌏][aboutme] |
120
129
 
121
130
  <!--
122
131
  The link tokens in the following sections should be kept ordered by the row and badge numbering scheme
@@ -354,6 +363,8 @@ end
354
363
 
355
364
  Keep in mind, this is ruby (and possibly rails), so you can add conditionals or utilize different environment.rb files to customize these settings on a per-environment basis.
356
365
 
366
+ ## Override the override
367
+
357
368
  But wait there's more:
358
369
 
359
370
  Let's say you have a method in your model that you can call to test the signup email. You want to be able to test sending it to any user at any time... but you don't want the user to ACTUALLY get the email, even in production. A dilemma, yes? Not anymore!
@@ -364,7 +375,9 @@ To override the environment based switch use `force_sanitize`, which is normally
364
375
  SanitizeEmail.force_sanitize = true
365
376
  ```
366
377
 
367
- There are also two methods that take a block and turn SanitizeEmail on or off:
378
+ When testing your email in a console, you can manipulate how email will be handled in this way.
379
+
380
+ There are also two methods that take a block and turn SanitizeEmail on or off (see section on Thread Safety below):
368
381
 
369
382
  Regardless of the Config settings of SanitizeEmail you can do a local override to force unsanitary email in any environment.
370
383
 
@@ -394,6 +407,36 @@ You have access to all the same configuration options in the parameter hash as y
394
407
  end
395
408
  ```
396
409
 
410
+ ## Configuration Options
411
+
412
+ As used in the "Description" column below, `engaged` means: `SanitizeEmail.activate?(message) # => true`.
413
+ This happens in a few different ways, and two of them are in the config below (`engage` and `activation_proc`).
414
+
415
+ | Option | Type (Yard format) | Description |
416
+ |---------------------------------------------|--------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
417
+ | sanitized_to | [String, Array[String]] | (when engaged) Override CC field with these addresses |
418
+ | sanitized_cc | [String, Array[String]] | (when engaged) Override CC field with these addresses |
419
+ | sanitized_bcc | [String, Array[String]] | (when engaged) Override BCC field with these addresses |
420
+ | good_list | [Array[String]] | (when engaged) Email addresses to allow to pass-through without overriding |
421
+ | bad_list | [Array[String]] | (when engaged) Email addresses to be removed from message's TO, CC, & BCC |
422
+ | environment | [String, #to_s, Proc, Lambda, #call] | (when engaged) The environment value to use wherever it is added to message (e.g. in the subject line) |
423
+ | use_actual_email_as_sanitized_user_name | [Boolean] | (when engaged) Use "real" email address as username for sanitized email address (e.g. "real at example.com <sanitized@example.com>") |
424
+ | use_actual_email_prepended_to_subject | [Boolean] | (when engaged) Use "real" email address prepended to subject (e.g. "real at example.com Original Subject") |
425
+ | use_actual_environment_prepended_to_subject | [Boolean] | (when engaged) Use `environment` prepended to subject (e.g. "{{ STAGING }} Original Subject") |
426
+ | engage | [Boolean, nil] | Boolean will turn engage or disengage this gem, while `nil` ignores this setting and instead checks `activation_proc` |
427
+ | activation_proc | [Proc, Lambda, #call] | When checked, due to `engage: nil`, the result will either engage or disengage this gem |
428
+
429
+ ## Thread Safety
430
+
431
+ So long as you don't change the config after initializing it at runtime, you'll be fine.
432
+ Like many Ruby tools' config objects, it is a single config object, shared by all threads.
433
+ The helpers like `sanitary`, `unsanitary`, `janitor`, and `force_sanitize`
434
+ are intended to be used in single threaded environments,
435
+ like a test suite, or a console session.
436
+
437
+ I doubt I'll ever have a need for runtime reconfiguration of the config,
438
+ so I doubt I'll ever have a reason to make it "more" thread safe than it is now, but PRs are welcome!
439
+
397
440
  ## Use sanitize_email in your test suite!
398
441
 
399
442
  ### rspec
@@ -10,84 +10,86 @@ module SanitizeEmail
10
10
  extend SanitizeEmail::Deprecation
11
11
  attr_accessor :overridden_addresses # TODO: Just a stub, not implemented
12
12
 
13
- def initialize(*args)
14
- deprecation_message unless args.empty?
15
- end
13
+ class << self
14
+ # If all recipient addresses are allow-listed the field is left alone.
15
+ def delivering_email(message)
16
+ return unless sanitize_engaged?(message)
16
17
 
17
- # If all recipient addresses are allow-listed the field is left alone.
18
- def self.delivering_email(message)
19
- return unless sanitize_engaged?(message)
18
+ SanitizeEmail::MailHeaderTools
19
+ .add_original_addresses_as_headers(message)
20
+ SanitizeEmail::MailHeaderTools
21
+ .prepend_custom_subject(message)
20
22
 
21
- SanitizeEmail::MailHeaderTools
22
- .add_original_addresses_as_headers(message)
23
- SanitizeEmail::MailHeaderTools
24
- .prepend_custom_subject(message)
23
+ overridden = SanitizeEmail::OverriddenAddresses.new(message)
25
24
 
26
- overridden = SanitizeEmail::OverriddenAddresses.new(message)
25
+ message.to = overridden.overridden_to
26
+ message.cc = overridden.overridden_cc
27
+ message.bcc = overridden.overridden_bcc
27
28
 
28
- message.to = overridden.overridden_to
29
- message.cc = overridden.overridden_cc
30
- message.bcc = overridden.overridden_bcc
29
+ return if message["personalizations"].nil?
31
30
 
32
- return if message["personalizations"].nil?
31
+ message["personalizations"].value = overridden.overridden_personalizations
32
+ end
33
33
 
34
- message["personalizations"].value = overridden.overridden_personalizations
35
- end
34
+ # Will be called by the Hook to determine if an override should occur
35
+ # There are three ways SanitizeEmail can be turned on;
36
+ # in order of precedence they are:
37
+ #
38
+ # 1. SanitizeEmail.force_sanitize = true # by default it is nil
39
+ # Only useful for local context.
40
+ # Inside a method where you will be sending an email, set
41
+ #
42
+ # SanitizeEmail.force_sanitize = true
43
+ #
44
+ # just prior to delivering it. Also useful in the console.
45
+ #
46
+ # 2. If SanitizeEmail seems to not be sanitizing,
47
+ # you have probably not registered the interceptor.
48
+ # SanitizeEmail tries to do this for you.
49
+ # *Note*: If you are working in an environment that has
50
+ # a Mail or Mailer class that uses the register_interceptor API,
51
+ # the interceptor will already have been registered.
52
+ # The gem will probably have already done this for you,
53
+ # but some really old versions of Rails may need you to do this manually:
54
+ #
55
+ # Mail.register_interceptor(SanitizeEmail::Bleach)
56
+ #
57
+ # Once registered, SanitizeEmail needs to be engaged:
58
+ #
59
+ # # in config/initializers/sanitize_email.rb
60
+ # SanitizeEmail::Config.configure {|config| config[:engage] = true }
61
+ #
62
+ # 3. SanitizeEmail::Config.configure do |config|
63
+ # config[:activation_proc] = Proc.new { true }
64
+ # end
65
+ #
66
+ # If you don't need to compute anything,
67
+ # then don't use the Proc, go with the previous option.
68
+ #
69
+ # Note: Number 1 is the method used by the SanitizeEmail.sanitary block
70
+ # Note: Number 2 You may need to setup your own register_interceptor
71
+ #
72
+ # If installed but not configured, sanitize_email DOES NOTHING.
73
+ # Until configured the defaults leave it turned off.
74
+ def sanitize_engaged?(message)
75
+ # Don't sanitize the message if it will not be delivered
76
+ return false unless message.perform_deliveries
36
77
 
37
- # Will be called by the Hook to determine if an override should occur
38
- # There are three ways SanitizeEmail can be turned on;
39
- # in order of precedence they are:
40
- #
41
- # 1. SanitizeEmail.force_sanitize = true # by default it is nil
42
- # Only useful for local context.
43
- # Inside a method where you will be sending an email, set
44
- #
45
- # SanitizeEmail.force_sanitize = true
46
- #
47
- # just prior to delivering it. Also useful in the console.
48
- #
49
- # 2. If SanitizeEmail seems to not be sanitizing,
50
- # you have probably not registered the interceptor.
51
- # SanitizeEmail tries to do this for you.
52
- # *Note*: If you are working in an environment that has
53
- # a Mail or Mailer class that uses the register_interceptor API,
54
- # the interceptor will already have been registered.
55
- # The gem will probably have already done this for you,
56
- # but some really old versions of Rails may need you to do this manually:
57
- #
58
- # Mail.register_interceptor(SanitizeEmail::Bleach)
59
- #
60
- # Once registered, SanitizeEmail needs to be engaged:
61
- #
62
- # # in config/initializers/sanitize_email.rb
63
- # SanitizeEmail::Config.configure {|config| config[:engage] = true }
64
- #
65
- # 3. SanitizeEmail::Config.configure do |config|
66
- # config[:activation_proc] = Proc.new { true }
67
- # end
68
- #
69
- # If you don't need to compute anything,
70
- # then don't use the Proc, go with the previous option.
71
- #
72
- # Note: Number 1 is the method used by the SanitizeEmail.sanitary block
73
- # Note: Number 2 You may need to setup your own register_interceptor
74
- #
75
- # If installed but not configured, sanitize_email DOES NOTHING.
76
- # Until configured the defaults leave it turned off.
77
- def self.sanitize_engaged?(message)
78
- # Don't sanitize the message if it will not be delivered
79
- return false unless message.perform_deliveries
78
+ # Has it been forced via the force_sanitize mattr?
79
+ forced = SanitizeEmail.force_sanitize
80
+ return forced unless forced.nil?
80
81
 
81
- # Has it been forced via the force_sanitize mattr?
82
- forced = SanitizeEmail.force_sanitize
83
- return forced unless forced.nil?
82
+ # Is this particular instance of Bleach engaged
83
+ engaged = SanitizeEmail::Config.config[:engage]
84
+ return engaged unless engaged.nil?
84
85
 
85
- # Is this particular instance of Bleach engaged
86
- engaged = SanitizeEmail::Config.config[:engage]
87
- return engaged unless engaged.nil?
86
+ # Should we sanitize due to the activation_proc?
87
+ SanitizeEmail.activate?(message)
88
+ end
89
+ end
88
90
 
89
- # Should we sanitize due to the activation_proc?
90
- SanitizeEmail.activate?(message)
91
+ def initialize(*args)
92
+ deprecation_message unless args.empty?
91
93
  end
92
94
 
93
95
  private
@@ -42,11 +42,11 @@ module SanitizeEmail
42
42
 
43
43
  # Use the "real" email address as the username
44
44
  # for the sanitized email address
45
- # e.g. "real@example.com <sanitized@example.com>"
45
+ # e.g. "real at example.com <sanitized@example.com>"
46
46
  use_actual_email_as_sanitized_user_name: false,
47
47
 
48
48
  # Prepend the "real" email address onto the Subject line of the message
49
- # e.g. "real@example.com rest of subject"
49
+ # e.g. "real at example.com rest of subject"
50
50
  use_actual_email_prepended_to_subject: false,
51
51
 
52
52
  # Prepend the Rails environment onto the Subject line of the message
@@ -4,8 +4,9 @@
4
4
  # Released under the MIT license
5
5
 
6
6
  module SanitizeEmail
7
- # For Rails >= 3.1
8
- class Engine < ::Rails::Engine
7
+ # For Rails >= 3.1, < 6.0
8
+ # TODO: Remove when support for Rails < 6 is dropped
9
+ class EngineV5 < ::Rails::Engine
9
10
  config.to_prepare do
10
11
  ActionMailer::Base.register_interceptor(SanitizeEmail::Bleach)
11
12
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2008 - 2018, 2020, 2022, 2024 Peter H. Boling of RailsBling.com
4
+ # Released under the MIT license
5
+
6
+ module SanitizeEmail
7
+ # For Rails >= 6.0
8
+ class EngineV5 < ::Rails::Engine
9
+ config.to_prepare do
10
+ # For the reasoning behind the difference between v5 and v6 engines,
11
+ # - see: https://github.com/rails/rails/issues/36546#issuecomment-850888284
12
+ config.action_mailer.register_interceptor(SanitizeEmail::Bleach)
13
+ end
14
+ end
15
+ end
@@ -26,7 +26,11 @@ module SanitizeEmail
26
26
  end
27
27
 
28
28
  def self.prepend_environment_to_subject
29
- SanitizeEmail::Config.config[:environment]
29
+ if SanitizeEmail::Config.config[:environment].respond_to?(:call)
30
+ SanitizeEmail::Config.config[:environment].call.to_s
31
+ else
32
+ SanitizeEmail::Config.config[:environment].to_s
33
+ end
30
34
  end
31
35
 
32
36
  def self.prepend_email_to_subject(actual_addresses)
@@ -9,8 +9,11 @@ require "mail"
9
9
  module SanitizeEmail
10
10
  # Tools for overriding addresses
11
11
  class OverriddenAddresses
12
- # Raised when after applying all sanitization rules there are no addresses to send the email to.
13
- class MissingTo < StandardError; end
12
+ # Raised when there are no recipients after sanitization
13
+ class MissingRecipients < StandardError; end
14
+
15
+ # MissingTo is Deprecated
16
+ class MissingTo < MissingRecipients; end
14
17
 
15
18
  # Raised if there is a recipient type that sanitize_email doesn't recognize.
16
19
  # If you get this error please report it.
@@ -45,16 +48,18 @@ module SanitizeEmail
45
48
  tempmail.cc = cc_override(message.cc)
46
49
  tempmail.bcc = bcc_override(message.bcc)
47
50
 
51
+ # remove addresses from :cc / :bcc that are also in :to
48
52
  remove_duplicates
49
53
 
50
54
  @overridden_to = tempmail[:to].decoded
51
55
  @overridden_cc = tempmail[:cc].decoded
52
56
  @overridden_bcc = tempmail[:bcc].decoded
53
57
 
54
- # remove addresses from :cc that are in :to
55
- return if message["personalizations"].nil?
56
-
57
- @overridden_personalizations = personalizations_override(message["personalizations"])
58
+ if message["personalizations"].nil?
59
+ raise MissingRecipients, "No recipients left post-sanitization" if (tempmail.to + tempmail.cc + tempmail.bcc).empty?
60
+ else
61
+ @overridden_personalizations = personalizations_override(message["personalizations"])
62
+ end
58
63
  end
59
64
 
60
65
  # Allow good listed email addresses, and then remove the bad listed addresses
@@ -66,8 +71,6 @@ module SanitizeEmail
66
71
 
67
72
  def to_override(actual_addresses)
68
73
  to = override_email(:to, actual_addresses)
69
- raise MissingTo, "after overriding :to (#{actual_addresses}) there are no addresses to send in To: header." if to.empty?
70
-
71
74
  to.join(",")
72
75
  end
73
76
 
@@ -79,6 +82,7 @@ module SanitizeEmail
79
82
  override_email(:bcc, actual_addresses).join(",")
80
83
  end
81
84
 
85
+ # Intended to result in compatibility with https://github.com/eddiezane/sendgrid-actionmailer
82
86
  def personalizations_override(actual_personalizations)
83
87
  actual_personalizations.unparsed_value.map do |actual_personalization|
84
88
  actual_personalization.merge(
@@ -89,6 +89,17 @@ module SanitizeEmail
89
89
  end
90
90
  end
91
91
 
92
+ RSpec::Matchers.define("have_bcc_username") do |matcher|
93
+ def get_bcc_usernames(email_message)
94
+ to_addrs = email_message[:bcc].addrs
95
+ to_addrs.map(&:name)
96
+ end
97
+ match do |actual|
98
+ @actual = get_bcc_usernames(actual)
99
+ expect(@actual).to(include(match(matcher)))
100
+ end
101
+ end
102
+
92
103
  # Cribbed from email_spec gem
93
104
  RSpec::Matchers.define("have_body_text") do |matcher|
94
105
  def get_fuzzy_body(email_message)
@@ -5,6 +5,6 @@
5
5
 
6
6
  module SanitizeEmail
7
7
  module Version
8
- VERSION = "2.0.4"
8
+ VERSION = "2.0.5"
9
9
  end
10
10
  end
@@ -21,7 +21,13 @@ module SanitizeEmail
21
21
  # Allow non-rails implementations to use this gem
22
22
  if defined?(::Rails) && defined?(::Rails::VERSION)
23
23
  if defined?(::Rails::Engine)
24
- require "sanitize_email/engine"
24
+ if ::Rails::VERSION::MAJOR >= 6
25
+ # Rails 6.0+
26
+ require "sanitize_email/engine_v6"
27
+ else
28
+ # Rails 3.1 to 5.2
29
+ require "sanitize_email/engine_v5"
30
+ end
25
31
  elsif ::Rails::VERSION::MAJOR == 3 && ::Rails::VERSION::MINOR.zero?
26
32
  require "sanitize_email/railtie"
27
33
  else
@@ -54,7 +60,7 @@ module SanitizeEmail
54
60
  # NOTE: Deprecated method
55
61
  # We have to actually define because we can't deprecate methods that are hooked up via method_missing
56
62
  def self.sanitized_recipients
57
- SanitizeEmail::Config.config[:sanitized_recipients]
63
+ # NOOP - This method is never actually executed, because the deprecations redirects the call to sanitized_to
58
64
  end
59
65
 
60
66
  # NOTE: Deprecated method
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sanitize_email
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
@@ -38,26 +38,29 @@ cert_chain:
38
38
  KuxrfYrN+9HvMdm+nZ6TypmKftHY3Gj+/uu+g8Icm/zrvTWAEE0mcJOkfrIoNPJb
39
39
  pF8dMA==
40
40
  -----END CERTIFICATE-----
41
- date: 2024-03-23 00:00:00.000000000 Z
41
+ date: 2024-04-18 00:00:00.000000000 Z
42
42
  dependencies:
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: mail
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ">="
47
+ - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '0'
49
+ version: '2.0'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ">="
54
+ - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '0'
56
+ version: '2.0'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: version_gem
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.1'
61
64
  - - ">="
62
65
  - !ruby/object:Gem::Version
63
66
  version: 1.1.4
@@ -65,6 +68,9 @@ dependencies:
65
68
  prerelease: false
66
69
  version_requirements: !ruby/object:Gem::Requirement
67
70
  requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '1.1'
68
74
  - - ">="
69
75
  - !ruby/object:Gem::Version
70
76
  version: 1.1.4
@@ -178,6 +184,26 @@ dependencies:
178
184
  - - ">="
179
185
  - !ruby/object:Gem::Version
180
186
  version: 1.0.5
187
+ - !ruby/object:Gem::Dependency
188
+ name: rspec-pending_for
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '0.1'
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: 0.1.16
197
+ type: :development
198
+ prerelease: false
199
+ version_requirements: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: '0.1'
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: 0.1.16
181
207
  description: |2
182
208
  Email Condom for your Ruby Server.
183
209
  In Rails, Sinatra, et al, or simply the mail gem: Aids in development, testing, qa, and production troubleshooting of email issues without worrying that emails will get sent to actual live addresses.
@@ -197,7 +223,8 @@ files:
197
223
  - lib/sanitize_email/bleach.rb
198
224
  - lib/sanitize_email/config.rb
199
225
  - lib/sanitize_email/deprecation.rb
200
- - lib/sanitize_email/engine.rb
226
+ - lib/sanitize_email/engine_v5.rb
227
+ - lib/sanitize_email/engine_v6.rb
201
228
  - lib/sanitize_email/mail_ext.rb
202
229
  - lib/sanitize_email/mail_header_tools.rb
203
230
  - lib/sanitize_email/overridden_addresses.rb
@@ -205,10 +232,18 @@ files:
205
232
  - lib/sanitize_email/rspec_matchers.rb
206
233
  - lib/sanitize_email/test_helpers.rb
207
234
  - lib/sanitize_email/version.rb
208
- homepage: http://github.com/pboling/sanitize_email
235
+ homepage: https://github.com/pboling/sanitize_email
209
236
  licenses:
210
237
  - MIT
211
- metadata: {}
238
+ metadata:
239
+ homepage_uri: https://github.com/pboling/sanitize_email
240
+ source_code_uri: https://github.com/pboling/sanitize_email/tree/v2.0.5
241
+ changelog_uri: https://github.com/pboling/sanitize_email/blob/v2.0.5/CHANGELOG.md
242
+ bug_tracker_uri: https://github.com/pboling/sanitize_email/issues
243
+ documentation_uri: https://www.rubydoc.info/gems/sanitize_email/2.0.5
244
+ wiki_uri: https://github.com/pboling/sanitize_email/wiki
245
+ funding_uri: https://liberapay.com/pboling
246
+ rubygems_mfa_required: 'true'
212
247
  post_install_message:
213
248
  rdoc_options: []
214
249
  require_paths:
@@ -224,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
259
  - !ruby/object:Gem::Version
225
260
  version: '0'
226
261
  requirements: []
227
- rubygems_version: 3.5.6
262
+ rubygems_version: 3.5.9
228
263
  signing_key:
229
264
  specification_version: 4
230
265
  summary: Email Condom for your Ruby Server
metadata.gz.sig CHANGED
Binary file