sanitize_email 1.1.6 → 1.1.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|