truemail 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE.md +2 -2
- data/.github/PULL_REQUEST_TEMPLATE.md +1 -1
- data/.reek.yml +1 -0
- data/.rubocop.yml +3 -0
- data/Gemfile.lock +1 -1
- data/README.md +61 -7
- data/lib/truemail/configuration.rb +20 -11
- data/lib/truemail/validate/domain_list_match.rb +11 -3
- data/lib/truemail/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0dcc1349ffc22296ae3af4dd04ce6b42501964ff1ca2072791d3e41320478d38
|
4
|
+
data.tar.gz: 26e29784585ca4ca560f574d7cf60f23e9aa9300757f11a1567881efa826b53a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b51544bb6b74fe12510f1e008c1a2265ad4eb9fed77a4618025bccc22571c748d99d02ca8994504576b0011ca6064469f94b77c56f1d6dd4ed896cbb1c3f1929
|
7
|
+
data.tar.gz: 260c8f3c1b2a7d0fdce382d325a510187e1c92ec7d658f2c12e04ef231186ed49a433de826fec5f2ef9c6a30076ba04abd8f29636a10cee2a25711ad0337178d
|
data/.github/ISSUE_TEMPLATE.md
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
### New Issue Checklist
|
4
4
|
|
5
5
|
- [ ] I have updated truemail to the latest version
|
6
|
-
- [ ] I have read the [Contribution Guidelines](
|
7
|
-
- [ ] I have read the [documentation](
|
6
|
+
- [ ] I have read the [Contribution Guidelines](https://github.com/rubygarage/truemail/blob/master/CONTRIBUTING.md)
|
7
|
+
- [ ] I have read the [documentation](https://github.com/rubygarage/truemail/blob/master/README.md)
|
8
8
|
- [ ] I have searched for [existing GitHub issues](https://github.com/rubygarage/truemail/issues)
|
9
9
|
|
10
10
|
### Issue Description
|
@@ -40,7 +40,7 @@
|
|
40
40
|
- [ ] My code follows the code style of this project
|
41
41
|
- [ ] My change requires a change to the documentation
|
42
42
|
- [ ] I have updated the documentation accordingly
|
43
|
-
- [ ] I have read the [**CONTRIBUTING** document](
|
43
|
+
- [ ] I have read the [**CONTRIBUTING** document](https://github.com/rubygarage/truemail/blob/master/CONTRIBUTING.md)
|
44
44
|
- [ ] I have added tests to cover my changes
|
45
45
|
- [ ] I have run `bundle exec rspec` from the root directory to see all new and existing tests pass
|
46
46
|
- [ ] I have run `rubocop` and `reek` to ensure the code style is valid
|
data/.reek.yml
CHANGED
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Truemail
|
2
2
|
|
3
|
-
[![Maintainability](https://api.codeclimate.com/v1/badges/657aa241399927dcd2e2/maintainability)](https://codeclimate.com/github/rubygarage/truemail/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/657aa241399927dcd2e2/test_coverage)](https://codeclimate.com/github/rubygarage/truemail/test_coverage) [![Gem Version](https://badge.fury.io/rb/truemail.svg)](https://badge.fury.io/rb/truemail) [![
|
3
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/657aa241399927dcd2e2/maintainability)](https://codeclimate.com/github/rubygarage/truemail/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/657aa241399927dcd2e2/test_coverage)](https://codeclimate.com/github/rubygarage/truemail/test_coverage) [![CircleCI](https://circleci.com/gh/rubygarage/truemail/tree/master.svg?style=svg)](https://circleci.com/gh/rubygarage/truemail/tree/master) [![Gem Version](https://badge.fury.io/rb/truemail.svg)](https://badge.fury.io/rb/truemail) [![Downloads](https://img.shields.io/gem/dt/truemail.svg?colorA=004d99&colorB=0073e6)](https://rubygems.org/gems/truemail) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v1.4%20adopted-ff69b4.svg)](CODE_OF_CONDUCT.md)
|
4
4
|
|
5
5
|
The Truemail gem helps you validate emails by regex pattern, presence of domain mx-records, and real existence of email account on a current email server. Also Truemail gem allows performing an audit of the host in which runs.
|
6
6
|
|
@@ -90,7 +90,12 @@ Truemail.configure do |config|
|
|
90
90
|
# return true. Other validations will not processed even if it was defined in validation_type_for
|
91
91
|
config.whitelisted_domains = ['somedomain1.com', 'somedomain2.com']
|
92
92
|
|
93
|
-
# Optional parameter.
|
93
|
+
# Optional parameter. With this option Truemail will validate email which contains whitelisted
|
94
|
+
# domain only, i.e. if domain whitelisted, validation will passed to Regex, MX or SMTP validators.
|
95
|
+
# Validation of email which not contains whitelisted domain always will return false.
|
96
|
+
config.whitelist_validation = true
|
97
|
+
|
98
|
+
# Optional parameter. Validation of email which contains blacklisted domain always will
|
94
99
|
# return false. Other validations will not processed even if it was defined in validation_type_for
|
95
100
|
config.blacklisted_domains = ['somedomain1.com', 'somedomain2.com']
|
96
101
|
|
@@ -116,6 +121,7 @@ Truemail.configuration
|
|
116
121
|
@connection_attempts=3,
|
117
122
|
@validation_type_by_domain={},
|
118
123
|
@whitelisted_domains=[],
|
124
|
+
@whitelist_validation=true,
|
119
125
|
@blacklisted_domains=[],
|
120
126
|
@verifier_domain="somedomain.com",
|
121
127
|
@verifier_email="verifier@example.com"
|
@@ -141,6 +147,7 @@ Truemail.configuration
|
|
141
147
|
@connection_attempts=1,
|
142
148
|
@validation_type_by_domain={},
|
143
149
|
@whitelisted_domains=[],
|
150
|
+
@whitelist_validation=true,
|
144
151
|
@blacklisted_domains=[],
|
145
152
|
@verifier_domain="somedomain.com",
|
146
153
|
@verifier_email="verifier@example.com",
|
@@ -168,7 +175,8 @@ Please note, other validations will not processed even if it was defined in ```v
|
|
168
175
|
|
169
176
|
**Sequence of domain list check:**
|
170
177
|
1. Whitelist check
|
171
|
-
2.
|
178
|
+
2. Whitelist validation check
|
179
|
+
3. Blacklist check
|
172
180
|
|
173
181
|
Example of usage:
|
174
182
|
|
@@ -201,6 +209,53 @@ Truemail.validate('email@white-domain.com')
|
|
201
209
|
@validation_type=:whitelist>
|
202
210
|
```
|
203
211
|
|
212
|
+
##### Whitelist validation case
|
213
|
+
|
214
|
+
```ruby
|
215
|
+
require 'truemail'
|
216
|
+
|
217
|
+
Truemail.configure do |config|
|
218
|
+
config.verifier_email = 'verifier@example.com'
|
219
|
+
config.whitelisted_domains = ['white-domain.com']
|
220
|
+
config.whitelist_validation = true
|
221
|
+
end
|
222
|
+
```
|
223
|
+
|
224
|
+
When email domain in whitelist and ```whitelist_validation``` is sets equal to ```true``` validation type will be passed to other validators.
|
225
|
+
Validation of email which not contains whitelisted domain always will return ```false```.
|
226
|
+
|
227
|
+
###### Email has whitelisted domain
|
228
|
+
|
229
|
+
```ruby
|
230
|
+
Truemail.validate('email@white-domain.com', with: :regex)
|
231
|
+
|
232
|
+
#<Truemail::Validator:0x000055b8429f3490
|
233
|
+
@result=#<struct Truemail::Validator::Result
|
234
|
+
success=true,
|
235
|
+
email="email@white-domain.com",
|
236
|
+
domain=nil,
|
237
|
+
mail_servers=[],
|
238
|
+
errors={},
|
239
|
+
smtp_debug=nil>,
|
240
|
+
@validation_type=:regex>
|
241
|
+
```
|
242
|
+
|
243
|
+
###### Email hasn't whitelisted domain
|
244
|
+
|
245
|
+
```ruby
|
246
|
+
Truemail.validate('email@domain.com', with: :regex)
|
247
|
+
|
248
|
+
#<Truemail::Validator:0x000055b8429f3490
|
249
|
+
@result=#<struct Truemail::Validator::Result
|
250
|
+
success=false,
|
251
|
+
email="email@domain.com",
|
252
|
+
domain=nil,
|
253
|
+
mail_servers=[],
|
254
|
+
errors={},
|
255
|
+
smtp_debug=nil>,
|
256
|
+
@validation_type=:blacklist>
|
257
|
+
```
|
258
|
+
|
204
259
|
##### Blacklist case
|
205
260
|
|
206
261
|
When email in blacklist, validation type will be redefined too. Validation result returns ```false```
|
@@ -384,6 +439,7 @@ Truemail.validate('email@example.com')
|
|
384
439
|
@smtp_safe_check=false,
|
385
440
|
@validation_type_by_domain={},
|
386
441
|
@whitelisted_domains=[],
|
442
|
+
@whitelist_validation=false,
|
387
443
|
@blacklisted_domains=[],
|
388
444
|
@verifier_domain="example.com",
|
389
445
|
@verifier_email="verifier@example.com">,
|
@@ -440,6 +496,7 @@ Truemail.validate('email@example.com')
|
|
440
496
|
@smtp_safe_check=true,
|
441
497
|
@validation_type_by_domain={},
|
442
498
|
@whitelisted_domains=[],
|
499
|
+
@whitelist_validation=false,
|
443
500
|
@blacklisted_domains=[],
|
444
501
|
@verifier_domain="example.com",
|
445
502
|
@verifier_email="verifier@example.com">,
|
@@ -480,6 +537,7 @@ Truemail.validate('email@example.com')
|
|
480
537
|
@smtp_safe_check=true,
|
481
538
|
@validation_type_by_domain={},
|
482
539
|
@whitelisted_domains=[],
|
540
|
+
@whitelist_validation=false,
|
483
541
|
@blacklisted_domains=[],
|
484
542
|
@verifier_domain="example.com",
|
485
543
|
@verifier_email="verifier@example.com">,
|
@@ -553,10 +611,6 @@ end
|
|
553
611
|
```
|
554
612
|
|
555
613
|
---
|
556
|
-
## ToDo
|
557
|
-
|
558
|
-
Fail validations logger
|
559
|
-
|
560
614
|
## Contributing
|
561
615
|
|
562
616
|
Bug reports and pull requests are welcome on GitHub at https://github.com/rubygarage/truemail. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. Please check the [open tikets](https://github.com/rubygarage/truemail/issues). Be shure to follow Contributor Code of Conduct below and our [Contributing Guidelines](CONTRIBUTING.md).
|
@@ -19,21 +19,14 @@ module Truemail
|
|
19
19
|
:whitelisted_domains,
|
20
20
|
:blacklisted_domains
|
21
21
|
|
22
|
-
attr_accessor :smtp_safe_check
|
22
|
+
attr_accessor :whitelist_validation, :smtp_safe_check
|
23
23
|
|
24
24
|
alias retry_count connection_attempts
|
25
25
|
|
26
26
|
def initialize
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
@response_timeout = Truemail::Configuration::DEFAULT_RESPONSE_TIMEOUT
|
31
|
-
@connection_attempts = Truemail::Configuration::DEFAULT_CONNECTION_ATTEMPTS
|
32
|
-
@default_validation_type = Truemail::Configuration::DEFAULT_VALIDATION_TYPE
|
33
|
-
@validation_type_by_domain = {}
|
34
|
-
@whitelisted_domains = []
|
35
|
-
@blacklisted_domains = []
|
36
|
-
@smtp_safe_check = false
|
27
|
+
instance_initializer.each do |instace_variable, value|
|
28
|
+
instance_variable_set(:"@#{instace_variable}", value)
|
29
|
+
end
|
37
30
|
end
|
38
31
|
|
39
32
|
%i[email_pattern smtp_error_body_pattern].each do |method|
|
@@ -84,6 +77,22 @@ module Truemail
|
|
84
77
|
|
85
78
|
private
|
86
79
|
|
80
|
+
def instance_initializer
|
81
|
+
{
|
82
|
+
email_pattern: Truemail::RegexConstant::REGEX_EMAIL_PATTERN,
|
83
|
+
smtp_error_body_pattern: Truemail::RegexConstant::REGEX_SMTP_ERROR_BODY_PATTERN,
|
84
|
+
connection_timeout: Truemail::Configuration::DEFAULT_CONNECTION_TIMEOUT,
|
85
|
+
response_timeout: Truemail::Configuration::DEFAULT_RESPONSE_TIMEOUT,
|
86
|
+
connection_attempts: Truemail::Configuration::DEFAULT_CONNECTION_ATTEMPTS,
|
87
|
+
default_validation_type: Truemail::Configuration::DEFAULT_VALIDATION_TYPE,
|
88
|
+
validation_type_by_domain: {},
|
89
|
+
whitelisted_domains: [],
|
90
|
+
whitelist_validation: false,
|
91
|
+
blacklisted_domains: [],
|
92
|
+
smtp_safe_check: false
|
93
|
+
}
|
94
|
+
end
|
95
|
+
|
87
96
|
def raise_unless(argument_context, argument_name, condition)
|
88
97
|
raise Truemail::ArgumentError.new(argument_context, argument_name) unless condition
|
89
98
|
end
|
@@ -6,8 +6,8 @@ module Truemail
|
|
6
6
|
ERROR = 'blacklisted email'
|
7
7
|
|
8
8
|
def run
|
9
|
-
return success(true) if whitelisted_domain?
|
10
|
-
return unless blacklisted_domain?
|
9
|
+
return success(true) if whitelisted_domain? && !whitelist_validation?
|
10
|
+
return unless whitelist_validation_case? || blacklisted_domain?
|
11
11
|
success(false)
|
12
12
|
add_error(Truemail::Validate::DomainListMatch::ERROR)
|
13
13
|
end
|
@@ -19,7 +19,15 @@ module Truemail
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def whitelisted_domain?
|
22
|
-
configuration.whitelisted_domains.include?(email_domain)
|
22
|
+
@whitelisted_domain ||= configuration.whitelisted_domains.include?(email_domain)
|
23
|
+
end
|
24
|
+
|
25
|
+
def whitelist_validation?
|
26
|
+
configuration.whitelist_validation
|
27
|
+
end
|
28
|
+
|
29
|
+
def whitelist_validation_case?
|
30
|
+
whitelist_validation? && !whitelisted_domain?
|
23
31
|
end
|
24
32
|
|
25
33
|
def blacklisted_domain?
|
data/lib/truemail/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: truemail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladislav Trotsenko
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|