sanitize_email 2.0.3 → 2.0.5
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +97 -12
- data/CODE_OF_CONDUCT.md +84 -0
- data/CONTRIBUTING.md +47 -0
- data/{LICENSE → LICENSE.txt} +1 -1
- data/README.md +415 -59
- data/SECURITY.md +15 -0
- data/lib/sanitize_email/bleach.rb +75 -68
- data/lib/sanitize_email/config.rb +22 -22
- data/lib/sanitize_email/deprecation.rb +6 -6
- data/lib/sanitize_email/{engine.rb → engine_v5.rb} +4 -3
- data/lib/sanitize_email/engine_v6.rb +15 -0
- data/lib/sanitize_email/mail_ext.rb +2 -0
- data/lib/sanitize_email/mail_header_tools.rb +24 -16
- data/lib/sanitize_email/overridden_addresses.rb +84 -22
- data/lib/sanitize_email/railtie.rb +1 -1
- data/lib/sanitize_email/rspec_matchers.rb +66 -31
- data/lib/sanitize_email/test_helpers.rb +6 -6
- data/lib/sanitize_email/version.rb +4 -2
- data/lib/sanitize_email.rb +35 -19
- data.tar.gz.sig +0 -0
- metadata +108 -93
- metadata.gz.sig +0 -0
- data/.coveralls.yml +0 -1
- data/.gitignore +0 -12
- data/.pryrc +0 -11
- data/.reek +0 -9
- data/.rspec +0 -2
- data/.rubocop.yml +0 -73
- data/.rubocop_rspec.yml +0 -35
- data/.rubocop_todo.yml +0 -21
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.travis.yml +0 -71
- data/Appraisals +0 -29
- data/Gemfile +0 -22
- data/REEK +0 -2
- data/Rakefile +0 -52
- data/gemfiles/rails_4_2.gemfile +0 -17
- data/gemfiles/rails_5_0.gemfile +0 -17
- data/gemfiles/rails_5_1.gemfile +0 -17
- data/gemfiles/rails_5_2.gemfile +0 -17
- data/init.rb +0 -3
- data/sanitize_email.gemspec +0 -49
- data/spec/sanitize_email_spec.rb +0 -944
- data/spec/spec_helper.rb +0 -28
@@ -1,92 +1,127 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (c) 2008-
|
3
|
+
# Copyright (c) 2008 - 2018, 2020, 2022, 2024 Peter H. Boling of RailsBling.com
|
4
4
|
# Released under the MIT license
|
5
5
|
# Note: the RspecMatchers are composed matchers:
|
6
6
|
# See: http://www.relishapp.com/rspec/rspec-expectations/v/3-5/docs/composing-matchers
|
7
7
|
|
8
|
-
require
|
8
|
+
require "sanitize_email/mail_ext"
|
9
9
|
|
10
10
|
module SanitizeEmail
|
11
11
|
# Provides matchers that can be used in
|
12
12
|
# Rspec tests to assert the behavior of email
|
13
13
|
module RspecMatchers
|
14
14
|
%i[from to cc bcc subject reply_to].each do |attribute|
|
15
|
-
RSpec::Matchers.define
|
15
|
+
RSpec::Matchers.define("have_#{attribute}") do |matcher|
|
16
16
|
match do |actual|
|
17
17
|
@actual = actual.send(attribute)
|
18
|
-
@actual = @actual.join(
|
19
|
-
expect(@actual).to
|
18
|
+
@actual = @actual.join(", ") if @actual.respond_to?(:join)
|
19
|
+
expect(@actual).to(match(matcher))
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
%i[from to cc bcc subject reply_to].each do |attribute|
|
25
|
-
RSpec::Matchers.define
|
25
|
+
RSpec::Matchers.define("match_#{attribute}") do |matcher|
|
26
26
|
match do |actual|
|
27
27
|
@actual = actual.send(attribute)
|
28
|
-
@actual = @actual.join(
|
29
|
-
expect(@actual).to
|
28
|
+
@actual = @actual.join(", ") if @actual.respond_to?(:join)
|
29
|
+
expect(@actual).to(match(matcher))
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
34
|
%i[from to cc bcc subject reply_to].each do |attribute|
|
35
|
-
RSpec::Matchers.define
|
35
|
+
RSpec::Matchers.define("be_#{attribute}") do |matcher|
|
36
36
|
match do |actual|
|
37
37
|
@actual = actual.send(attribute)
|
38
|
-
@actual = @actual.join(
|
39
|
-
expect(@actual).to
|
38
|
+
@actual = @actual.join(", ") if @actual.respond_to?(:join)
|
39
|
+
expect(@actual).to(be(matcher))
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
RSpec::Matchers.define
|
45
|
-
def
|
46
|
-
|
47
|
-
|
48
|
-
email_message.header.fields[3].value
|
44
|
+
RSpec::Matchers.define("have_to_username") do |matcher|
|
45
|
+
def get_to_usernames(email_message)
|
46
|
+
to_addrs = email_message[:to].addrs
|
47
|
+
to_addrs.map(&:name)
|
49
48
|
end
|
50
49
|
match do |actual|
|
51
|
-
@actual =
|
52
|
-
expect(@actual).to
|
50
|
+
@actual = get_to_usernames(actual)
|
51
|
+
expect(@actual).to(include(match(matcher)))
|
53
52
|
end
|
54
53
|
end
|
55
54
|
|
56
|
-
RSpec::Matchers.define
|
57
|
-
def
|
58
|
-
|
59
|
-
return
|
60
|
-
|
55
|
+
RSpec::Matchers.define("have_sanitized_to_header") do |matcher|
|
56
|
+
def get_sanitized_to_header(email_message)
|
57
|
+
sanitized_to_header = email_message.header["X-Sanitize-Email-To"]
|
58
|
+
return sanitized_to_header.value if sanitized_to_header.is_a?(Mail::Field)
|
59
|
+
|
60
|
+
"no header found at 'X-Sanitize-Email-To'"
|
61
|
+
end
|
62
|
+
match do |actual|
|
63
|
+
@actual = get_sanitized_to_header(actual)
|
64
|
+
expect(@actual).to(match(matcher))
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
RSpec::Matchers.define("have_cc_username") do |matcher|
|
69
|
+
def get_cc_usernames(email_message)
|
70
|
+
to_addrs = email_message[:cc].addrs
|
71
|
+
to_addrs.map(&:name)
|
72
|
+
end
|
73
|
+
match do |actual|
|
74
|
+
@actual = get_cc_usernames(actual)
|
75
|
+
expect(@actual).to(include(match(matcher)))
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
RSpec::Matchers.define("have_sanitized_cc_header") do |matcher|
|
80
|
+
def get_sanitized_cc_header(email_message)
|
81
|
+
sanitized_cc_header = email_message.header["X-Sanitize-Email-Cc"]
|
82
|
+
return sanitized_cc_header.value if sanitized_cc_header.is_a?(Mail::Field)
|
83
|
+
|
84
|
+
"no header found at 'X-Sanitize-Email-Cc'"
|
85
|
+
end
|
86
|
+
match do |actual|
|
87
|
+
@actual = get_sanitized_cc_header(actual)
|
88
|
+
expect(@actual).to(match(matcher))
|
89
|
+
end
|
90
|
+
end
|
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)
|
61
96
|
end
|
62
97
|
match do |actual|
|
63
|
-
@actual =
|
64
|
-
expect(@actual).to
|
98
|
+
@actual = get_bcc_usernames(actual)
|
99
|
+
expect(@actual).to(include(match(matcher)))
|
65
100
|
end
|
66
101
|
end
|
67
102
|
|
68
103
|
# Cribbed from email_spec gem
|
69
|
-
RSpec::Matchers.define
|
104
|
+
RSpec::Matchers.define("have_body_text") do |matcher|
|
70
105
|
def get_fuzzy_body(email_message)
|
71
|
-
email_message.default_part_body.to_s.gsub(/\s+/,
|
106
|
+
email_message.default_part_body.to_s.gsub(/\s+/, " ")
|
72
107
|
end
|
73
108
|
|
74
109
|
def get_fuzzy_matcher(to_fuzz)
|
75
|
-
to_fuzz.gsub(/\s+/,
|
110
|
+
to_fuzz.gsub(/\s+/, " ")
|
76
111
|
end
|
77
112
|
match do |actual|
|
78
113
|
@actual = get_fuzzy_body(actual)
|
79
114
|
fuzzy_matcher = get_fuzzy_matcher(matcher)
|
80
|
-
expect(@actual).to
|
115
|
+
expect(@actual).to(match(fuzzy_matcher))
|
81
116
|
end
|
82
117
|
end
|
83
118
|
|
84
119
|
# Cribbed from email_spec gem
|
85
|
-
RSpec::Matchers.define
|
120
|
+
RSpec::Matchers.define("have_header") do |name, matcher|
|
86
121
|
match do |actual|
|
87
122
|
@actual = actual.header[name]
|
88
123
|
@actual = @actual.value unless @actual.nil?
|
89
|
-
expect(@actual).to
|
124
|
+
expect(@actual).to(match(matcher))
|
90
125
|
end
|
91
126
|
end
|
92
127
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (c) 2008-
|
3
|
+
# Copyright (c) 2008 - 2018, 2020, 2022, 2024 Peter H. Boling of RailsBling.com
|
4
4
|
# Released under the MIT license
|
5
5
|
# Note: the RspecMatchers no longer use these methods. Instead they are composed matchers:
|
6
6
|
# See: http://www.relishapp.com/rspec/rspec-expectations/v/3-5/docs/composing-matchers
|
@@ -19,15 +19,15 @@ module SanitizeEmail
|
|
19
19
|
# Can we match a regex against it?
|
20
20
|
raise UnexpectedMailType, "Cannot match #{matcher} for #{part}" unless attribute.respond_to?(:=~)
|
21
21
|
attribute =~ if matcher.is_a?(Regexp)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
matcher
|
23
|
+
else
|
24
|
+
Regexp.new(Regexp.escape(matcher))
|
25
|
+
end
|
26
26
|
end
|
27
27
|
|
28
28
|
# Normalize arrays to strings
|
29
29
|
def array_matching(matcher, part, attribute)
|
30
|
-
attribute = attribute.join(
|
30
|
+
attribute = attribute.join(", ") if attribute.respond_to?(:join)
|
31
31
|
string_matching(matcher, part, attribute)
|
32
32
|
end
|
33
33
|
|
@@ -1,8 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (c) 2008-
|
3
|
+
# Copyright (c) 2008 - 2018, 2020, 2022, 2024 Peter H. Boling of RailsBling.com
|
4
4
|
# Released under the MIT license
|
5
5
|
|
6
6
|
module SanitizeEmail
|
7
|
-
|
7
|
+
module Version
|
8
|
+
VERSION = "2.0.5"
|
9
|
+
end
|
8
10
|
end
|
data/lib/sanitize_email.rb
CHANGED
@@ -1,28 +1,40 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (c) 2008-
|
3
|
+
# Copyright (c) 2008 - 2018, 2020, 2022, 2024 Peter H. Boling of RailsBling.com
|
4
4
|
# Released under the MIT license
|
5
5
|
|
6
|
-
|
7
|
-
require
|
8
|
-
|
9
|
-
|
10
|
-
require
|
11
|
-
require
|
6
|
+
# External Libraries
|
7
|
+
require "version_gem"
|
8
|
+
|
9
|
+
# This Library
|
10
|
+
require "sanitize_email/version"
|
11
|
+
require "sanitize_email/deprecation"
|
12
|
+
require "sanitize_email/config"
|
13
|
+
require "sanitize_email/mail_header_tools"
|
14
|
+
require "sanitize_email/overridden_addresses"
|
15
|
+
require "sanitize_email/bleach"
|
12
16
|
|
13
17
|
module SanitizeEmail
|
14
18
|
# Error is raised when a block parameter is required and not provided to a method
|
15
19
|
class MissingBlockParameter < StandardError; end
|
16
20
|
|
17
21
|
# Allow non-rails implementations to use this gem
|
18
|
-
if defined?(::Rails)
|
22
|
+
if defined?(::Rails) && defined?(::Rails::VERSION)
|
19
23
|
if defined?(::Rails::Engine)
|
20
|
-
|
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
|
21
31
|
elsif ::Rails::VERSION::MAJOR == 3 && ::Rails::VERSION::MINOR.zero?
|
22
|
-
require
|
32
|
+
require "sanitize_email/railtie"
|
23
33
|
else
|
24
|
-
raise
|
34
|
+
raise "Please use the 0.X.X versions of sanitize_email for Rails 2.X and below."
|
25
35
|
end
|
36
|
+
elsif defined?(ActionMailer)
|
37
|
+
ActionMailer::Base.register_interceptor(SanitizeEmail::Bleach)
|
26
38
|
else
|
27
39
|
if defined?(Mailer)
|
28
40
|
mailer = Mailer
|
@@ -32,12 +44,12 @@ module SanitizeEmail
|
|
32
44
|
if mailer.respond_to?(:register_interceptor)
|
33
45
|
mailer.register_interceptor(SanitizeEmail::Bleach)
|
34
46
|
else
|
35
|
-
warn
|
47
|
+
warn "SanitizeEmail was unable to detect a compatible Mail class to register an interceptor on."
|
36
48
|
end
|
37
49
|
end
|
38
50
|
|
39
51
|
def self.[](key)
|
40
|
-
return
|
52
|
+
return unless key.respond_to?(:to_sym)
|
41
53
|
SanitizeEmail::Config.config[key.to_sym]
|
42
54
|
end
|
43
55
|
|
@@ -48,7 +60,7 @@ module SanitizeEmail
|
|
48
60
|
# NOTE: Deprecated method
|
49
61
|
# We have to actually define because we can't deprecate methods that are hooked up via method_missing
|
50
62
|
def self.sanitized_recipients
|
51
|
-
|
63
|
+
# NOOP - This method is never actually executed, because the deprecations redirects the call to sanitized_to
|
52
64
|
end
|
53
65
|
|
54
66
|
# NOTE: Deprecated method
|
@@ -83,8 +95,8 @@ module SanitizeEmail
|
|
83
95
|
# end
|
84
96
|
#
|
85
97
|
def self.sanitary(config_options = {})
|
86
|
-
raise MissingBlockParameter,
|
87
|
-
janitor(:
|
98
|
+
raise MissingBlockParameter, "SanitizeEmail.sanitary must be called with a block" unless block_given?
|
99
|
+
janitor(forcing: true) do
|
88
100
|
original = SanitizeEmail::Config.config.dup
|
89
101
|
SanitizeEmail::Config.config.merge!(config_options)
|
90
102
|
yield
|
@@ -105,14 +117,14 @@ module SanitizeEmail
|
|
105
117
|
# end
|
106
118
|
#
|
107
119
|
def self.unsanitary
|
108
|
-
raise MissingBlockParameter,
|
109
|
-
janitor(:
|
120
|
+
raise MissingBlockParameter, "SanitizeEmail.unsanitary must be called with a block" unless block_given?
|
121
|
+
janitor(forcing: false) do
|
110
122
|
yield
|
111
123
|
end
|
112
124
|
end
|
113
125
|
|
114
126
|
def self.janitor(options)
|
115
|
-
raise MissingBlockParameter,
|
127
|
+
raise MissingBlockParameter, "SanitizeEmail.janitor must be called with a block" unless block_given?
|
116
128
|
original = SanitizeEmail.force_sanitize
|
117
129
|
SanitizeEmail.force_sanitize = options[:forcing]
|
118
130
|
yield
|
@@ -126,3 +138,7 @@ module SanitizeEmail
|
|
126
138
|
deprecated :local_environments, :activation_proc
|
127
139
|
end
|
128
140
|
end
|
141
|
+
|
142
|
+
SanitizeEmail::Version.class_eval do
|
143
|
+
extend VersionGem::Basic
|
144
|
+
end
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
CHANGED
@@ -1,101 +1,107 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sanitize_email
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
8
8
|
- John Trupiano
|
9
9
|
- George Anderson
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
|
-
cert_chain:
|
13
|
-
|
12
|
+
cert_chain:
|
13
|
+
- |
|
14
|
+
-----BEGIN CERTIFICATE-----
|
15
|
+
MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
|
16
|
+
ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
|
17
|
+
A2NvbTAeFw0yMzA5MjAxNzMwMjhaFw0yNDA5MTkxNzMwMjhaMEMxFTATBgNVBAMM
|
18
|
+
DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
|
19
|
+
LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA+a9UvHo3
|
20
|
+
84k96WgU5Kk5HB+cLZs/modjorsTfqY67MJF5nNvAoqcKTUBW4uG+Zpfnm3jaDO5
|
21
|
+
GxhJEIZWfndYzycHT2KMVQ1uTP82ba8ZaKrPlPIafkbui3mdds47qsmqHiblKERg
|
22
|
+
U532lkwfqHDlJwE7OBZQ59EwWWLynlT/yAUHpOBbqIuHKUxdpmBI+sIjrZcD1e05
|
23
|
+
WmjkO6fwIdC5oM757aoPxIgXD587VOViH11Vkm2doskj4T8yONtwVHlcrrhJ9Bzd
|
24
|
+
/zdp6vEn7GZQrABvpOlqwWxQ72ZnFhJe/RJZf6CXOPOh69Ai0QKYl2a1sYuCJKS3
|
25
|
+
nsBnxXJINEEznjR7rZjNUmYD+CZqfjzgPqedRxTlASe7iA4w7xZOqMDzcuhNwcUQ
|
26
|
+
tMEH6BTktxKP3jXZPXRfHCf6s+HRVb6vezAonTBVyydf5Xp5VwWkd6cwm+2BzHl5
|
27
|
+
7kc/3lLxKMcsyEUprAsk8LdHohwZdC267l+RS++AP6Cz6x+nB3oGob19AgMBAAGj
|
28
|
+
fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQCSSas60GqqMjt
|
29
|
+
xR7LoY1gucEvtzAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
|
30
|
+
A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
|
31
|
+
ggGBAMl9ifcw5p+PdvB7dCPoNKoVdp/2LbC9ztETHuYL2gUMJB6UoS3o9c/piSuR
|
32
|
+
V3ZMQaijmNu6ms1bWAtJ66LjmYrVflJtf9yp31Kierr9LpisMSUx2qbMOHGa8d2Z
|
33
|
+
vCUWPF8E9Cg0mP3GAyZ6qql8jDh/anUKeksPXqJvNxNPDu2DVYsa/IWdl96whzS4
|
34
|
+
Bl7SwB1E7agps40UcshCSKaVDOU0M+XN6SrnJMElnBic+KSAkBkVFbzS0BE4ODZM
|
35
|
+
BgE6nYzQ05qhuvbE+oGdACTlemNtDDWCh0uw+7x0q2PocGIDU5zsPn/WNTkCXPmB
|
36
|
+
CHGvqDNWq4M7ncTKAaS2XExgyb7uPdq9fKiOW8nmH+zCiGzJXzBWwZlKf7L4Ht9E
|
37
|
+
a3f0e5C+zvee9Z5Ng9ciyfav9/fcXgYt5MjoBv27THr5XfBhgOCIHSYW2tqJmWKi
|
38
|
+
KuxrfYrN+9HvMdm+nZ6TypmKftHY3Gj+/uu+g8Icm/zrvTWAEE0mcJOkfrIoNPJb
|
39
|
+
pF8dMA==
|
40
|
+
-----END CERTIFICATE-----
|
41
|
+
date: 2024-04-18 00:00:00.000000000 Z
|
14
42
|
dependencies:
|
15
43
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
requirements:
|
19
|
-
- - ">="
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '3'
|
22
|
-
type: :development
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
version: '3'
|
29
|
-
- !ruby/object:Gem::Dependency
|
30
|
-
name: appraisal
|
44
|
+
name: mail
|
31
45
|
requirement: !ruby/object:Gem::Requirement
|
32
46
|
requirements:
|
33
47
|
- - "~>"
|
34
48
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
36
|
-
type: :
|
49
|
+
version: '2.0'
|
50
|
+
type: :runtime
|
37
51
|
prerelease: false
|
38
52
|
version_requirements: !ruby/object:Gem::Requirement
|
39
53
|
requirements:
|
40
54
|
- - "~>"
|
41
55
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
56
|
+
version: '2.0'
|
43
57
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
58
|
+
name: version_gem
|
45
59
|
requirement: !ruby/object:Gem::Requirement
|
46
60
|
requirements:
|
47
61
|
- - "~>"
|
48
62
|
- !ruby/object:Gem::Version
|
49
|
-
version: '1'
|
50
|
-
|
63
|
+
version: '1.1'
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 1.1.4
|
67
|
+
type: :runtime
|
51
68
|
prerelease: false
|
52
69
|
version_requirements: !ruby/object:Gem::Requirement
|
53
70
|
requirements:
|
54
71
|
- - "~>"
|
55
72
|
- !ruby/object:Gem::Version
|
56
|
-
version: '1'
|
73
|
+
version: '1.1'
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.1.4
|
57
77
|
- !ruby/object:Gem::Dependency
|
58
|
-
name:
|
78
|
+
name: actionmailer
|
59
79
|
requirement: !ruby/object:Gem::Requirement
|
60
80
|
requirements:
|
61
|
-
- - "
|
81
|
+
- - ">="
|
62
82
|
- !ruby/object:Gem::Version
|
63
|
-
version: '
|
83
|
+
version: '3'
|
64
84
|
type: :development
|
65
85
|
prerelease: false
|
66
86
|
version_requirements: !ruby/object:Gem::Requirement
|
67
87
|
requirements:
|
68
|
-
- - "
|
88
|
+
- - ">="
|
69
89
|
- !ruby/object:Gem::Version
|
70
|
-
version: '
|
90
|
+
version: '3'
|
71
91
|
- !ruby/object:Gem::Dependency
|
72
|
-
name:
|
92
|
+
name: appraisal
|
73
93
|
requirement: !ruby/object:Gem::Requirement
|
74
94
|
requirements:
|
75
95
|
- - "~>"
|
76
96
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
97
|
+
version: '2'
|
78
98
|
type: :development
|
79
99
|
prerelease: false
|
80
100
|
version_requirements: !ruby/object:Gem::Requirement
|
81
101
|
requirements:
|
82
102
|
- - "~>"
|
83
103
|
- !ruby/object:Gem::Version
|
84
|
-
version: '
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: mail
|
87
|
-
requirement: !ruby/object:Gem::Requirement
|
88
|
-
requirements:
|
89
|
-
- - ">="
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: '0'
|
92
|
-
type: :development
|
93
|
-
prerelease: false
|
94
|
-
version_requirements: !ruby/object:Gem::Requirement
|
95
|
-
requirements:
|
96
|
-
- - ">="
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '0'
|
104
|
+
version: '2'
|
99
105
|
- !ruby/object:Gem::Dependency
|
100
106
|
name: rails
|
101
107
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,9 +109,9 @@ dependencies:
|
|
103
109
|
- - ">="
|
104
110
|
- !ruby/object:Gem::Version
|
105
111
|
version: '3.0'
|
106
|
-
- - "
|
112
|
+
- - "<="
|
107
113
|
- !ruby/object:Gem::Version
|
108
|
-
version: '
|
114
|
+
version: '8'
|
109
115
|
type: :development
|
110
116
|
prerelease: false
|
111
117
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -113,9 +119,9 @@ dependencies:
|
|
113
119
|
- - ">="
|
114
120
|
- !ruby/object:Gem::Version
|
115
121
|
version: '3.0'
|
116
|
-
- - "
|
122
|
+
- - "<="
|
117
123
|
- !ruby/object:Gem::Version
|
118
|
-
version: '
|
124
|
+
version: '8'
|
119
125
|
- !ruby/object:Gem::Dependency
|
120
126
|
name: rake
|
121
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -159,19 +165,45 @@ dependencies:
|
|
159
165
|
- !ruby/object:Gem::Version
|
160
166
|
version: '3'
|
161
167
|
- !ruby/object:Gem::Dependency
|
162
|
-
name:
|
168
|
+
name: rspec-block_is_expected
|
163
169
|
requirement: !ruby/object:Gem::Requirement
|
164
170
|
requirements:
|
165
171
|
- - "~>"
|
166
172
|
- !ruby/object:Gem::Version
|
167
|
-
version: '1'
|
173
|
+
version: '1.0'
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: 1.0.5
|
168
177
|
type: :development
|
169
178
|
prerelease: false
|
170
179
|
version_requirements: !ruby/object:Gem::Requirement
|
171
180
|
requirements:
|
172
181
|
- - "~>"
|
173
182
|
- !ruby/object:Gem::Version
|
174
|
-
version: '1'
|
183
|
+
version: '1.0'
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
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
|
175
207
|
description: |2
|
176
208
|
Email Condom for your Ruby Server.
|
177
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.
|
@@ -179,39 +211,20 @@ email:
|
|
179
211
|
- peter.boling@gmail.com
|
180
212
|
executables: []
|
181
213
|
extensions: []
|
182
|
-
extra_rdoc_files:
|
183
|
-
- CHANGELOG.md
|
184
|
-
- LICENSE
|
185
|
-
- README.md
|
214
|
+
extra_rdoc_files: []
|
186
215
|
files:
|
187
|
-
- ".coveralls.yml"
|
188
|
-
- ".gitignore"
|
189
|
-
- ".pryrc"
|
190
|
-
- ".reek"
|
191
|
-
- ".rspec"
|
192
|
-
- ".rubocop.yml"
|
193
|
-
- ".rubocop_rspec.yml"
|
194
|
-
- ".rubocop_todo.yml"
|
195
|
-
- ".ruby-gemset"
|
196
|
-
- ".ruby-version"
|
197
|
-
- ".travis.yml"
|
198
|
-
- Appraisals
|
199
216
|
- CHANGELOG.md
|
200
|
-
-
|
201
|
-
-
|
217
|
+
- CODE_OF_CONDUCT.md
|
218
|
+
- CONTRIBUTING.md
|
219
|
+
- LICENSE.txt
|
202
220
|
- README.md
|
203
|
-
-
|
204
|
-
- Rakefile
|
205
|
-
- gemfiles/rails_4_2.gemfile
|
206
|
-
- gemfiles/rails_5_0.gemfile
|
207
|
-
- gemfiles/rails_5_1.gemfile
|
208
|
-
- gemfiles/rails_5_2.gemfile
|
209
|
-
- init.rb
|
221
|
+
- SECURITY.md
|
210
222
|
- lib/sanitize_email.rb
|
211
223
|
- lib/sanitize_email/bleach.rb
|
212
224
|
- lib/sanitize_email/config.rb
|
213
225
|
- lib/sanitize_email/deprecation.rb
|
214
|
-
- lib/sanitize_email/
|
226
|
+
- lib/sanitize_email/engine_v5.rb
|
227
|
+
- lib/sanitize_email/engine_v6.rb
|
215
228
|
- lib/sanitize_email/mail_ext.rb
|
216
229
|
- lib/sanitize_email/mail_header_tools.rb
|
217
230
|
- lib/sanitize_email/overridden_addresses.rb
|
@@ -219,14 +232,19 @@ files:
|
|
219
232
|
- lib/sanitize_email/rspec_matchers.rb
|
220
233
|
- lib/sanitize_email/test_helpers.rb
|
221
234
|
- lib/sanitize_email/version.rb
|
222
|
-
|
223
|
-
- spec/sanitize_email_spec.rb
|
224
|
-
- spec/spec_helper.rb
|
225
|
-
homepage: http://github.com/pboling/sanitize_email
|
235
|
+
homepage: https://github.com/pboling/sanitize_email
|
226
236
|
licenses:
|
227
237
|
- MIT
|
228
|
-
metadata:
|
229
|
-
|
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'
|
247
|
+
post_install_message:
|
230
248
|
rdoc_options: []
|
231
249
|
require_paths:
|
232
250
|
- lib
|
@@ -241,11 +259,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
241
259
|
- !ruby/object:Gem::Version
|
242
260
|
version: '0'
|
243
261
|
requirements: []
|
244
|
-
|
245
|
-
|
246
|
-
signing_key:
|
262
|
+
rubygems_version: 3.5.9
|
263
|
+
signing_key:
|
247
264
|
specification_version: 4
|
248
265
|
summary: Email Condom for your Ruby Server
|
249
|
-
test_files:
|
250
|
-
- spec/sanitize_email_spec.rb
|
251
|
-
- spec/spec_helper.rb
|
266
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|
data/.coveralls.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
service_name: travis-ci
|
data/.gitignore
DELETED
data/.pryrc
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
if defined?(PryByebug)
|
2
|
-
Pry.commands.alias_command 'c', 'continue'
|
3
|
-
Pry.commands.alias_command 's', 'step'
|
4
|
-
Pry.commands.alias_command 'n', 'next'
|
5
|
-
Pry.commands.alias_command 'trace', 'backtrace'
|
6
|
-
end
|
7
|
-
|
8
|
-
# Hit Enter to repeat last command
|
9
|
-
Pry::Commands.command /^$/, "repeat last command" do
|
10
|
-
_pry_.run_command Pry.history.to_a.last
|
11
|
-
end
|
data/.reek
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
# attr_accessor is, in many cases, better than @instance variables which fail silently on typos, IMO
|
2
|
-
Attribute:
|
3
|
-
enabled: false
|
4
|
-
# One line methods are awesome, but need to focus on bigger problems first. Will lower this number as the code improves.
|
5
|
-
TooManyStatements:
|
6
|
-
max_statements: 8
|
7
|
-
FeatureEnvy:
|
8
|
-
exclude:
|
9
|
-
- delivering_email
|
data/.rspec
DELETED