sanitize_email 1.1.6 → 1.1.7
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
- data/.reek +9 -0
- data/.travis.yml +13 -13
- data/CHANGELOG.md +10 -0
- data/README.md +3 -3
- data/REEK +36 -47
- data/Rakefile +30 -2
- data/gemfiles/Gemfile.rails-3.0.x +2 -1
- data/gemfiles/Gemfile.rails-3.1.x +3 -2
- data/gemfiles/Gemfile.rails-3.2.x +2 -2
- data/gemfiles/Gemfile.rails-4.0.x +2 -2
- data/gemfiles/Gemfile.rails-4.1.x +6 -0
- data/gemfiles/Gemfile.rails-4.2.x +6 -0
- data/lib/sanitize_email.rb +3 -2
- data/lib/sanitize_email/bleach.rb +6 -6
- data/lib/sanitize_email/config.rb +10 -5
- data/lib/sanitize_email/deprecation.rb +10 -9
- data/lib/sanitize_email/engine.rb +3 -2
- data/lib/sanitize_email/mail_header_tools.rb +13 -16
- data/lib/sanitize_email/overridden_addresses.rb +13 -6
- data/lib/sanitize_email/railtie.rb +3 -2
- data/lib/sanitize_email/rspec_matchers.rb +2 -1
- data/lib/sanitize_email/test_helpers.rb +5 -1
- data/lib/sanitize_email/version.rb +3 -2
- data/sanitize_email.gemspec +4 -1
- data/spec/sanitize_email_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dad83c2fc389a4b7fc0c71bad51a426385cb7f3b
|
4
|
+
data.tar.gz: 381499e8ecdfa1e68e8dc6dcec6424a5f70cc692
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c19005b057992350619501523f542e55a62d7eca91f9fac6260989c831e204cc46b9f7be96e3856c44144e4cff086e283439598e9ec4e680cf4e0aeb30cedd4a
|
7
|
+
data.tar.gz: e22805701740b748658f462799b640e04b0ab13c8b4eaa0e62c38c56c2979a7e0697ef605f2daec810f644561d6a774523f430b24c0cce9403065d2b13b54063
|
data/.reek
ADDED
@@ -0,0 +1,9 @@
|
|
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/.travis.yml
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 1.9.3
|
4
3
|
- 2.0.0
|
5
|
-
- 2.1.
|
6
|
-
- 2.
|
7
|
-
- jruby-19mode
|
8
|
-
# - rbx-19mode
|
9
|
-
# - ruby-head
|
4
|
+
- 2.1.7
|
5
|
+
- 2.2.3
|
10
6
|
gemfile:
|
11
|
-
- gemfiles/Gemfile.rails-3.0.x
|
12
|
-
- gemfiles/Gemfile.rails-3.1.x
|
13
7
|
- gemfiles/Gemfile.rails-3.2.x
|
14
8
|
- gemfiles/Gemfile.rails-4.0.x
|
9
|
+
- gemfiles/Gemfile.rails-4.1.x
|
10
|
+
- gemfiles/Gemfile.rails-4.2.x
|
15
11
|
matrix:
|
16
12
|
exclude:
|
17
|
-
- rvm:
|
18
|
-
gemfile: gemfiles/Gemfile.rails-4.
|
19
|
-
- rvm: 1.
|
20
|
-
gemfile: gemfiles/Gemfile.rails-4.
|
21
|
-
|
13
|
+
- rvm: 2.0.0
|
14
|
+
gemfile: gemfiles/Gemfile.rails-4.2.x
|
15
|
+
- rvm: 2.1.7
|
16
|
+
gemfile: gemfiles/Gemfile.rails-4.2.x
|
17
|
+
matrix:
|
18
|
+
include:
|
19
|
+
- rvm: 1.9.3
|
22
20
|
gemfile: gemfiles/Gemfile.rails-3.0.x
|
21
|
+
- rvm: 1.9.3
|
22
|
+
gemfile: gemfiles/Gemfile.rails-3.1.x
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
HEAD
|
2
|
+
|
3
|
+
Version 1.1.7 - AUG.30.2015
|
4
|
+
* No API changes
|
5
|
+
* General improvement to the code base by Peter Boling
|
6
|
+
- small refactorings
|
7
|
+
- documentation
|
8
|
+
- setup reek properly
|
9
|
+
- Fixed travis build matrix, added latest Ruby and Rails, and bumped patch releases
|
10
|
+
|
1
11
|
Version 1.1.6 - AUG.29.2015
|
2
12
|
* spec run as default rake task & improve Rakefile syntax by Peter Boling
|
3
13
|
* prevent direct configuration via `DEFAULTS` from working, as that is not the API by Peter Boling
|
data/README.md
CHANGED
@@ -303,7 +303,7 @@ bundle exec rake test:all
|
|
303
303
|
If the tests pass refresh the `reek` list:
|
304
304
|
|
305
305
|
```
|
306
|
-
bundle exec
|
306
|
+
bundle exec reek > REEK
|
307
307
|
```
|
308
308
|
|
309
309
|
Follow the instructions for "Contributing" below.
|
@@ -331,7 +331,7 @@ dependency on this gem using the [Pessimistic Version Constraint][pvc] with two
|
|
331
331
|
|
332
332
|
For example:
|
333
333
|
|
334
|
-
spec.add_dependency 'sanitize_email', '~> 1.
|
334
|
+
spec.add_dependency 'sanitize_email', '~> 1.1'
|
335
335
|
|
336
336
|
## References
|
337
337
|
|
@@ -343,7 +343,7 @@ For example:
|
|
343
343
|
## Legal
|
344
344
|
|
345
345
|
* MIT License - See LICENSE file in this project
|
346
|
-
* Copyright (c) 2008-
|
346
|
+
* Copyright (c) 2008-2015 [Peter H. Boling][peterboling] of [Rails Bling][railsbling]
|
347
347
|
* Copyright (c) 2009 [John Trupiano](http://smartlogicsolutions.com/wiki/John_Trupiano) of [SmartLogic Solutions, LLC](http://www.smartlogicsolutions.com)
|
348
348
|
|
349
349
|
[semver]: http://semver.org/
|
data/REEK
CHANGED
@@ -1,48 +1,37 @@
|
|
1
|
-
lib/sanitize_email.rb --
|
2
|
-
SanitizeEmail#
|
3
|
-
|
4
|
-
SanitizeEmail::
|
5
|
-
|
6
|
-
SanitizeEmail::
|
7
|
-
|
8
|
-
SanitizeEmail::
|
9
|
-
|
10
|
-
SanitizeEmail::
|
11
|
-
lib/sanitize_email/config.rb -- 4 warnings:
|
12
|
-
SanitizeEmail::Config has no descriptive comment (IrresponsibleModule)
|
13
|
-
SanitizeEmail::Config#self.configure calls @config[:force_sanitize] twice (DuplicateMethodCall)
|
14
|
-
SanitizeEmail::Config#self.configure calls @config[:sanitized_recipients] twice (DuplicateMethodCall)
|
15
|
-
SanitizeEmail::Config#self.configure has approx 7 statements (TooManyStatements)
|
16
|
-
lib/sanitize_email/deprecation.rb -- 2 warnings:
|
17
|
-
SanitizeEmail::Deprecation takes parameters [name, replacement] to 3 methods (DataClump)
|
18
|
-
SanitizeEmail::Deprecation#deprecation is controlled by argument replacement (ControlParameter)
|
19
|
-
lib/sanitize_email/engine.rb -- 1 warning:
|
20
|
-
SanitizeEmail::Engine has no descriptive comment (IrresponsibleModule)
|
21
|
-
lib/sanitize_email/mail_header_tools.rb -- 8 warnings:
|
22
|
-
SanitizeEmail::MailHeaderTools#self.add_original_addresses_as_headers has the variable name 'k' (UncommunicativeVariableName)
|
23
|
-
SanitizeEmail::MailHeaderTools#self.add_original_addresses_as_headers has the variable name 'v' (UncommunicativeVariableName)
|
24
|
-
SanitizeEmail::MailHeaderTools#self.prepend_environment_to_subject calls Rails.env twice (DuplicateMethodCall)
|
25
|
-
SanitizeEmail::MailHeaderTools#self.update_header calls (index + 1) twice (DuplicateMethodCall)
|
26
|
-
SanitizeEmail::MailHeaderTools#self.update_header has the parameter name 'k' (UncommunicativeParameterName)
|
27
|
-
SanitizeEmail::MailHeaderTools#self.update_header has the parameter name 'v' (UncommunicativeParameterName)
|
28
|
-
SanitizeEmail::MailHeaderTools#self.update_header has the variable name 'a' (UncommunicativeVariableName)
|
29
|
-
SanitizeEmail::MailHeaderTools#self.update_header is controlled by argument v (ControlParameter)
|
1
|
+
lib/sanitize_email/bleach.rb -- 1 warning:
|
2
|
+
[59]:SanitizeEmail::Bleach#sanitize_engaged? performs a nil-check (NilCheck)
|
3
|
+
lib/sanitize_email/config.rb -- 3 warnings:
|
4
|
+
[64, 72]:SanitizeEmail::Config#self.configure calls @config[:force_sanitize] 2 times (DuplicateMethodCall)
|
5
|
+
[58, 62]:SanitizeEmail::Config#self.configure calls @config[:sanitized_recipients] 2 times (DuplicateMethodCall)
|
6
|
+
[64]:SanitizeEmail::Config#self.configure performs a nil-check (NilCheck)
|
7
|
+
lib/sanitize_email/deprecation.rb -- 1 warning:
|
8
|
+
[18, 29, 40]:SanitizeEmail::Deprecation takes parameters [name, replacement] to 3 methods (DataClump)
|
9
|
+
lib/sanitize_email/mail_header_tools.rb -- 1 warning:
|
10
|
+
[41, 42]:SanitizeEmail::MailHeaderTools#self.prepend_custom_subject calls message.subject 2 times (DuplicateMethodCall)
|
30
11
|
lib/sanitize_email/overridden_addresses.rb -- 7 warnings:
|
31
|
-
SanitizeEmail::OverriddenAddresses has
|
32
|
-
SanitizeEmail::OverriddenAddresses#
|
33
|
-
SanitizeEmail::OverriddenAddresses#inject_user_names
|
34
|
-
SanitizeEmail::OverriddenAddresses#inject_user_names
|
35
|
-
SanitizeEmail::OverriddenAddresses#
|
36
|
-
SanitizeEmail::OverriddenAddresses
|
37
|
-
SanitizeEmail::OverriddenAddresses
|
38
|
-
lib/sanitize_email/
|
39
|
-
SanitizeEmail::
|
40
|
-
lib/sanitize_email/
|
41
|
-
SanitizeEmail::
|
42
|
-
SanitizeEmail::
|
43
|
-
|
44
|
-
|
45
|
-
SanitizeEmail
|
46
|
-
|
47
|
-
|
48
|
-
|
12
|
+
[6]:SanitizeEmail::OverriddenAddresses has at least 8 instance variables (TooManyInstanceVariables)
|
13
|
+
[25, 26, 27, 28, 29]:SanitizeEmail::OverriddenAddresses#initialize calls SanitizeEmail::Config.config 5 times (DuplicateMethodCall)
|
14
|
+
[109]:SanitizeEmail::OverriddenAddresses#inject_user_names contains iterators nested 2 deep (NestedIterators)
|
15
|
+
[103]:SanitizeEmail::OverriddenAddresses#inject_user_names doesn't depend on instance state (UtilityFunction)
|
16
|
+
[105]:SanitizeEmail::OverriddenAddresses#inject_user_names performs a nil-check (NilCheck)
|
17
|
+
[56]:SanitizeEmail::OverriddenAddresses#override_email has approx 10 statements (TooManyStatements)
|
18
|
+
[125]:SanitizeEmail::OverriddenAddresses#sanitize_addresses is controlled by argument type (ControlParameter)
|
19
|
+
lib/sanitize_email/rspec_matchers.rb -- 1 warning:
|
20
|
+
[35]:SanitizeEmail::RspecMatchers#get_username doesn't depend on instance state (UtilityFunction)
|
21
|
+
lib/sanitize_email/test_helpers.rb -- 3 warnings:
|
22
|
+
[11, 15, 28, 33]:SanitizeEmail::TestHelpers takes parameters [mail_or_part, matcher, part] to 4 methods (DataClump)
|
23
|
+
[29, 29]:SanitizeEmail::TestHelpers#array_matching refers to mail_or_part more than self (FeatureEnvy)
|
24
|
+
[16, 18, 20]:SanitizeEmail::TestHelpers#string_matching refers to mail_or_part more than self (FeatureEnvy)
|
25
|
+
lib/sanitize_email.rb -- 1 warning:
|
26
|
+
[84, 85]:SanitizeEmail#self.sanitary calls SanitizeEmail::Config.config 2 times (DuplicateMethodCall)
|
27
|
+
spec/sanitize_email_spec.rb -- 9 warnings:
|
28
|
+
[57, 57]:configure_sanitize_email calls options[:force_sanitize] 2 times (DuplicateMethodCall)
|
29
|
+
[55, 55]:configure_sanitize_email calls options[:local_environments] 2 times (DuplicateMethodCall)
|
30
|
+
[56, 56]:configure_sanitize_email calls options[:sanitized_recipients] 2 times (DuplicateMethodCall)
|
31
|
+
[41]:configure_sanitize_email doesn't depend on instance state (UtilityFunction)
|
32
|
+
[41]:configure_sanitize_email has approx 15 statements (TooManyStatements)
|
33
|
+
[57]:configure_sanitize_email performs a nil-check (NilCheck)
|
34
|
+
[68]:funky_config contains iterators nested 2 deep (NestedIterators)
|
35
|
+
[62]:funky_config doesn't depend on instance state (UtilityFunction)
|
36
|
+
[62]:funky_config has approx 10 statements (TooManyStatements)
|
37
|
+
27 total warnings
|
data/Rakefile
CHANGED
@@ -27,8 +27,36 @@ namespace :test do
|
|
27
27
|
desc "Test against all supported Rails versions"
|
28
28
|
task :all do
|
29
29
|
%w(3.0.x 3.1.x 3.2.x 4.0.x).each do |version|
|
30
|
-
|
31
|
-
|
30
|
+
system(<<-EOS
|
31
|
+
bash -i -c "rvm use 1.9.3"
|
32
|
+
BUNDLE_GEMFILE="gemfiles/Gemfile.rails-#{version}" bundle --quiet
|
33
|
+
BUNDLE_GEMFILE="gemfiles/Gemfile.rails-#{version}" bundle exec rspec spec
|
34
|
+
EOS
|
35
|
+
)
|
36
|
+
end
|
37
|
+
%w(3.2.x 4.0.x 4.1.x).each do |version|
|
38
|
+
system(<<-EOS
|
39
|
+
bash -i -c "rvm use 2.0.0"
|
40
|
+
BUNDLE_GEMFILE="gemfiles/Gemfile.rails-#{version}" bundle --quiet
|
41
|
+
BUNDLE_GEMFILE="gemfiles/Gemfile.rails-#{version}" bundle exec rspec spec
|
42
|
+
EOS
|
43
|
+
)
|
44
|
+
end
|
45
|
+
%w(3.2.x 4.0.x 4.1.x).each do |version|
|
46
|
+
system(<<-EOS
|
47
|
+
bash -i -c "rvm use 2.1.7"
|
48
|
+
BUNDLE_GEMFILE="gemfiles/Gemfile.rails-#{version}" bundle --quiet
|
49
|
+
BUNDLE_GEMFILE="gemfiles/Gemfile.rails-#{version}" bundle exec rspec spec
|
50
|
+
EOS
|
51
|
+
)
|
52
|
+
end
|
53
|
+
%w(3.2.x 4.0.x 4.1.x 4.2.x).each do |version|
|
54
|
+
system(<<-EOS
|
55
|
+
bash -i -c "rvm use 2.2.3"
|
56
|
+
BUNDLE_GEMFILE="gemfiles/Gemfile.rails-#{version}" bundle --quiet
|
57
|
+
BUNDLE_GEMFILE="gemfiles/Gemfile.rails-#{version}" bundle exec rspec spec
|
58
|
+
EOS
|
59
|
+
)
|
32
60
|
end
|
33
61
|
end
|
34
62
|
end
|
data/lib/sanitize_email.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-15 Peter H. Boling of RailsBling.com
|
2
2
|
# Released under the MIT license
|
3
3
|
|
4
4
|
module SanitizeEmail
|
@@ -9,6 +9,7 @@ module SanitizeEmail
|
|
9
9
|
require 'sanitize_email/overridden_addresses'
|
10
10
|
require 'sanitize_email/bleach'
|
11
11
|
|
12
|
+
# Error is raised when a block parameter is required and not provided to a method
|
12
13
|
class MissingBlockParameter < StandardError; end
|
13
14
|
|
14
15
|
# Allow non-rails implementations to use this gem
|
@@ -38,7 +39,7 @@ module SanitizeEmail
|
|
38
39
|
SanitizeEmail::Config.config[key.to_sym]
|
39
40
|
end
|
40
41
|
|
41
|
-
def self.method_missing(name, *
|
42
|
+
def self.method_missing(name, *_)
|
42
43
|
SanitizeEmail[name]
|
43
44
|
end
|
44
45
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-15 Peter H. Boling of RailsBling.com
|
2
2
|
# Released under the MIT license
|
3
3
|
|
4
4
|
module SanitizeEmail
|
@@ -7,7 +7,7 @@ module SanitizeEmail
|
|
7
7
|
|
8
8
|
# Can override global configs at the instance level.
|
9
9
|
attr_accessor :engage, # Turn sanitization on or off just for this instance
|
10
|
-
:overridden_addresses
|
10
|
+
:overridden_addresses # TODO: Just a stub. Needs actual implementation
|
11
11
|
|
12
12
|
def initialize(args = {})
|
13
13
|
# Not using extract_options! because non-rails compatibility is a goal
|
@@ -20,11 +20,11 @@ module SanitizeEmail
|
|
20
20
|
SanitizeEmail::MailHeaderTools.add_original_addresses_as_headers(message)
|
21
21
|
SanitizeEmail::MailHeaderTools.prepend_custom_subject(message)
|
22
22
|
|
23
|
-
|
23
|
+
overridden = SanitizeEmail::OverriddenAddresses.new(message)
|
24
24
|
|
25
|
-
message.to =
|
26
|
-
message.cc =
|
27
|
-
message.bcc =
|
25
|
+
message.to = overridden.overridden_to
|
26
|
+
message.cc = overridden.overridden_cc
|
27
|
+
message.bcc = overridden.overridden_bcc
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -1,7 +1,9 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-15 Peter H. Boling of RailsBling.com
|
2
2
|
# Released under the MIT license
|
3
3
|
|
4
4
|
module SanitizeEmail
|
5
|
+
# The API for configuring SanitizeEmail is via `SanitizeEmail.config`
|
6
|
+
# Available configuration options are listed in the `DEFAULTS`` constant.
|
5
7
|
class Config
|
6
8
|
|
7
9
|
extend SanitizeEmail::Deprecation
|
@@ -60,10 +62,13 @@ module SanitizeEmail
|
|
60
62
|
@config[:sanitized_to] = @config[:sanitized_recipients]
|
61
63
|
end
|
62
64
|
if !@config[:force_sanitize].nil?
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
65
|
+
deprecation_warning_message(
|
66
|
+
<<-EOS
|
67
|
+
SanitizeEmail::Config.config[:force_sanitize] is deprecated.
|
68
|
+
Please use SanitizeEmail.force_sanitize or SanitizeEmail.sanitary instead.
|
69
|
+
Refer to https://github.com/pboling/sanitize_email/wiki for examples.
|
70
|
+
EOS
|
71
|
+
)
|
67
72
|
SanitizeEmail.force_sanitize = @config[:force_sanitize]
|
68
73
|
end
|
69
74
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-15 Peter H. Boling of RailsBling.com
|
2
2
|
# Released under the MIT license
|
3
|
-
# See http://www.seejohncode.com/2012/01/09/deprecating-methods-in-ruby/
|
4
|
-
#require 'facets/module/mattr' # gives cattr
|
5
3
|
|
6
4
|
module SanitizeEmail
|
5
|
+
# Provides tools that allow methods to be deprecated with new releases of the gem.
|
6
|
+
# See http://www.seejohncode.com/2012/01/09/deprecating-methods-in-ruby/
|
7
7
|
module Deprecation
|
8
8
|
|
9
9
|
class << self
|
@@ -38,14 +38,15 @@ module SanitizeEmail
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def deprecation(name, replacement = nil)
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
warn "SanitizeEmail: ##{name} deprecated"
|
46
|
-
end
|
41
|
+
if replacement
|
42
|
+
deprecation_warning_message("SanitizeEmail: ##{name} deprecated#{replacement}")
|
43
|
+
else
|
44
|
+
deprecation_warning_message("SanitizeEmail: ##{name} deprecated")
|
47
45
|
end
|
48
46
|
end
|
49
47
|
|
48
|
+
def deprecation_warning_message(message)
|
49
|
+
warn message unless SanitizeEmail::Deprecation.deprecate_in_silence
|
50
|
+
end
|
50
51
|
end
|
51
52
|
end
|
@@ -1,7 +1,8 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-15 Peter H. Boling of RailsBling.com
|
2
2
|
# Released under the MIT license
|
3
|
-
|
3
|
+
|
4
4
|
module SanitizeEmail
|
5
|
+
# For Rails >= 3.1
|
5
6
|
class Engine < ::Rails::Engine
|
6
7
|
|
7
8
|
config.to_prepare do
|
@@ -1,6 +1,8 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-15 Peter H. Boling of RailsBling.com
|
2
2
|
# Released under the MIT license
|
3
|
+
|
3
4
|
module SanitizeEmail
|
5
|
+
# Tools for modifying the header of an email
|
4
6
|
module MailHeaderTools
|
5
7
|
|
6
8
|
def self.prepend_subject_array(message)
|
@@ -29,9 +31,9 @@ module SanitizeEmail
|
|
29
31
|
'X-Sanitize-Email-To' => Array(message.to).uniq, # can be an array, so casting it as an array
|
30
32
|
'X-Sanitize-Email-Cc' => Array(message.cc).uniq # can be an array, so casting it as an array
|
31
33
|
# Don't write out the BCC, as those addresses should not be visible in message headers for obvious reasons
|
32
|
-
}.each { |
|
34
|
+
}.each { |header_key, header_value|
|
33
35
|
# For each type of address line
|
34
|
-
SanitizeEmail::MailHeaderTools.update_header(
|
36
|
+
SanitizeEmail::MailHeaderTools.update_header(header_key, header_value, message)
|
35
37
|
}
|
36
38
|
end
|
37
39
|
|
@@ -41,20 +43,15 @@ module SanitizeEmail
|
|
41
43
|
end
|
42
44
|
|
43
45
|
# According to https://github.com/mikel/mail this is the correct way to update headers.
|
44
|
-
def self.update_header(
|
45
|
-
# For each address, as
|
46
|
-
Array(
|
46
|
+
def self.update_header(header_key, header_value, message)
|
47
|
+
# For each address, as header_value can be an array of addresses
|
48
|
+
Array(header_value).each_with_index { |elem, index|
|
47
49
|
num = index + 1
|
48
|
-
|
49
|
-
"#{
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
# Old way
|
54
|
-
# Add headers by string concat. Setting hash values on message.headers does nothing, strangely. http://goo.gl/v46GY
|
55
|
-
#message.header = message.header.to_s.strip + "\n#{k}: #{a}"
|
56
|
-
} if v
|
57
|
-
#puts "\nafter message.header:\n #{message.header}\n"
|
50
|
+
new_header_key = num > 1 ?
|
51
|
+
"#{header_key}-#{num}" :
|
52
|
+
header_key
|
53
|
+
message.header[new_header_key] = elem.to_s
|
54
|
+
} if header_value
|
58
55
|
end
|
59
56
|
|
60
57
|
end
|
@@ -1,13 +1,20 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-15 Peter H. Boling of RailsBling.com
|
2
2
|
# Released under the MIT license
|
3
|
+
|
3
4
|
module SanitizeEmail
|
5
|
+
# Tools for overriding addresses
|
4
6
|
class OverriddenAddresses
|
5
7
|
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
|
8
|
+
# Raised when after applying all sanitization rules there are no addresses to send the email to.
|
9
|
+
class MissingTo < StandardError; end
|
10
|
+
|
11
|
+
# Raised if there is a recipient type that sanitize_email doesn't recognize.
|
12
|
+
# If you get this error please report it.
|
13
|
+
# recognized recipient types are: TO, CC, and BCC
|
14
|
+
class UnknownOverride < StandardError; end
|
10
15
|
|
16
|
+
REPLACE_AT = [/@/, " at "]
|
17
|
+
REPLACE_ALLIGATOR = [/[<>]/, "~"]
|
11
18
|
attr_accessor :overridden_to, :overridden_cc, :overridden_bcc,
|
12
19
|
:good_list, # White-listed addresses will not be molested as to, cc, or bcc
|
13
20
|
:bad_list, # Black-listed addresses will be removed from to, cc and bcc when sanitization is engaged
|
@@ -99,7 +106,7 @@ module SanitizeEmail
|
|
99
106
|
new_recipient = sanitized_addresses
|
100
107
|
else
|
101
108
|
#puts "SANITIZED: #{sanitized_addresses}"
|
102
|
-
new_recipient = sanitized_addresses.map { |sanitized| "#{real_recipient.gsub(
|
109
|
+
new_recipient = sanitized_addresses.map { |sanitized| "#{real_recipient.gsub(REPLACE_AT[0], REPLACE_AT[1]).gsub(/[<>]/, '~')} <#{sanitized}>" }
|
103
110
|
end
|
104
111
|
result << new_recipient
|
105
112
|
result
|
@@ -1,7 +1,8 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-15 Peter H. Boling of RailsBling.com
|
2
2
|
# Released under the MIT license
|
3
|
-
|
3
|
+
|
4
4
|
module SanitizeEmail
|
5
|
+
# For Rails 3.0, which didn't yet support Engines
|
5
6
|
class Railtie < ::Rails::Railtie
|
6
7
|
|
7
8
|
config.after_initialize do
|
@@ -1,9 +1,10 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-15 Peter H. Boling of RailsBling.com
|
2
2
|
# Released under the MIT license
|
3
3
|
require 'sanitize_email/test_helpers'
|
4
4
|
require 'sanitize_email/mail_ext'
|
5
5
|
|
6
6
|
module SanitizeEmail
|
7
|
+
# Provides matchers that can be used in Rspec tests to assert the behavior of email
|
7
8
|
module RspecMatchers
|
8
9
|
include SanitizeEmail::TestHelpers
|
9
10
|
[:from, :to, :cc, :bcc, :reply_to].each do |attribute|
|
@@ -1,7 +1,11 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-15 Peter H. Boling of RailsBling.com
|
2
2
|
# Released under the MIT license
|
3
|
+
|
3
4
|
module SanitizeEmail
|
5
|
+
# Helpers for test-unit
|
4
6
|
module TestHelpers
|
7
|
+
|
8
|
+
# Error raised when unable to match an expected part of email in order to fail the test
|
5
9
|
class UnexpectedMailType < StandardError; end
|
6
10
|
|
7
11
|
def string_matching_attribute(matcher, part, mail_or_part)
|
data/sanitize_email.gemspec
CHANGED
@@ -7,7 +7,10 @@ Gem::Specification.new do |s|
|
|
7
7
|
|
8
8
|
s.authors = ["Peter Boling", "John Trupiano", "George Anderson"]
|
9
9
|
s.summary = "Email Condom for your Ruby Server"
|
10
|
-
s.description =
|
10
|
+
s.description = <<EOS
|
11
|
+
Email Condom for your Ruby Server.
|
12
|
+
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.
|
13
|
+
EOS
|
11
14
|
s.email = ["peter.boling@gmail.com"]
|
12
15
|
s.extra_rdoc_files = [
|
13
16
|
"CHANGELOG.md",
|
data/spec/sanitize_email_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
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: 1.1.
|
4
|
+
version: 1.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-08-
|
13
|
+
date: 2015-08-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -180,9 +180,9 @@ dependencies:
|
|
180
180
|
- - ">="
|
181
181
|
- !ruby/object:Gem::Version
|
182
182
|
version: '0'
|
183
|
-
description:
|
184
|
-
|
185
|
-
will get sent to actual live addresses.
|
183
|
+
description: |2
|
184
|
+
Email Condom for your Ruby Server.
|
185
|
+
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.
|
186
186
|
email: peter.boling@gmail.com
|
187
187
|
executables: []
|
188
188
|
extensions: []
|
@@ -193,6 +193,7 @@ extra_rdoc_files:
|
|
193
193
|
files:
|
194
194
|
- ".coveralls.yml"
|
195
195
|
- ".gitignore"
|
196
|
+
- ".reek"
|
196
197
|
- ".rspec"
|
197
198
|
- ".ruby-gemset"
|
198
199
|
- ".ruby-version"
|
@@ -207,6 +208,8 @@ files:
|
|
207
208
|
- gemfiles/Gemfile.rails-3.1.x
|
208
209
|
- gemfiles/Gemfile.rails-3.2.x
|
209
210
|
- gemfiles/Gemfile.rails-4.0.x
|
211
|
+
- gemfiles/Gemfile.rails-4.1.x
|
212
|
+
- gemfiles/Gemfile.rails-4.2.x
|
210
213
|
- init.rb
|
211
214
|
- lib/sanitize_email.rb
|
212
215
|
- lib/sanitize_email/bleach.rb
|