valid_email2 4.0.1 → 4.0.4
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/.github/workflows/ci.yaml +28 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +12 -0
- data/README.md +6 -17
- data/config/disposable_email_domains.txt +107775 -3
- data/gemfiles/activemodel7.gemfile +5 -0
- data/lib/valid_email2/address.rb +4 -4
- data/lib/valid_email2/version.rb +1 -1
- data/pull_mailchecker_emails.rb +10 -6
- data/spec/address_spec.rb +37 -0
- data/valid_email2.gemspec +3 -2
- metadata +25 -8
- data/.travis.yml +0 -21
data/lib/valid_email2/address.rb
CHANGED
@@ -38,14 +38,12 @@ module ValidEmail2
|
|
38
38
|
return @valid unless @valid.nil?
|
39
39
|
return false if @parse_error
|
40
40
|
|
41
|
-
@valid =
|
42
|
-
address.address == @raw_address &&
|
43
|
-
valid_domain? &&
|
44
|
-
valid_address?
|
41
|
+
@valid = valid_domain? && valid_address?
|
45
42
|
end
|
46
43
|
|
47
44
|
def valid_domain?
|
48
45
|
domain = address.domain
|
46
|
+
return false if domain.nil?
|
49
47
|
|
50
48
|
domain !~ self.class.prohibited_domain_characters_regex &&
|
51
49
|
domain.include?('.') &&
|
@@ -56,6 +54,8 @@ module ValidEmail2
|
|
56
54
|
end
|
57
55
|
|
58
56
|
def valid_address?
|
57
|
+
return false if address.address != @raw_address
|
58
|
+
|
59
59
|
!address.local.include?('..') &&
|
60
60
|
!address.local.end_with?('.') &&
|
61
61
|
!address.local.start_with?('.')
|
data/lib/valid_email2/version.rb
CHANGED
data/pull_mailchecker_emails.rb
CHANGED
@@ -9,16 +9,20 @@ whitelisted_emails = %w(
|
|
9
9
|
onet.pl poczta.onet.pl fastmail.fm hushmail.com
|
10
10
|
hush.ai hush.com hushmail.me naver.com qq.com example.com
|
11
11
|
yandex.net gmx.com gmx.es webdesignspecialist.com.au vp.com
|
12
|
-
onit.com asics.com
|
12
|
+
onit.com asics.com freemail.hu 139.com
|
13
13
|
)
|
14
14
|
|
15
15
|
existing_emails = File.open("config/disposable_email_domains.txt") { |f| f.read.split("\n") }
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
remote_emails = [
|
18
|
+
"https://raw.githubusercontent.com/FGRibreau/mailchecker/master/list.txt",
|
19
|
+
"https://raw.githubusercontent.com/disposable/disposable-email-domains/master/domains.txt",
|
20
|
+
].flat_map do |url|
|
21
|
+
resp = Net::HTTP.get_response(URI.parse(url))
|
19
22
|
|
20
|
-
|
23
|
+
resp.body.split("\n").flatten
|
24
|
+
end
|
21
25
|
|
22
|
-
result_emails = (existing_emails + remote_emails).map(&:strip).uniq.sort
|
26
|
+
result_emails = (existing_emails + remote_emails).map(&:strip).uniq.sort - whitelisted_emails
|
23
27
|
|
24
|
-
File.open("config/disposable_email_domains.txt", "w") {|f| f.write result_emails.join("\n") }
|
28
|
+
File.open("config/disposable_email_domains.txt", "w") { |f| f.write result_emails.join("\n") }
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe ValidEmail2::Address do
|
6
|
+
describe "#valid?" do
|
7
|
+
it "is valid" do
|
8
|
+
address = described_class.new("foo@bar123.com")
|
9
|
+
expect(address.valid?).to be true
|
10
|
+
end
|
11
|
+
|
12
|
+
it "is invalid if email is nil" do
|
13
|
+
address = described_class.new(nil)
|
14
|
+
expect(address.valid?).to be false
|
15
|
+
end
|
16
|
+
|
17
|
+
it "is invalid if email is empty" do
|
18
|
+
address = described_class.new(" ")
|
19
|
+
expect(address.valid?).to be false
|
20
|
+
end
|
21
|
+
|
22
|
+
it "is invalid if domain is missing" do
|
23
|
+
address = described_class.new("foo")
|
24
|
+
expect(address.valid?).to be false
|
25
|
+
end
|
26
|
+
|
27
|
+
it "is invalid if email cannot be parsed" do
|
28
|
+
address = described_class.new("<>")
|
29
|
+
expect(address.valid?).to be false
|
30
|
+
end
|
31
|
+
|
32
|
+
it "is invalid if email contains emoticons" do
|
33
|
+
address = described_class.new("foo🙈@gmail.com")
|
34
|
+
expect(address.valid?).to be false
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/valid_email2.gemspec
CHANGED
@@ -21,9 +21,10 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.required_ruby_version = ">= 1.9.3"
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 2.0"
|
24
|
-
spec.add_development_dependency "rake", "~> 12.3
|
25
|
-
spec.add_development_dependency "rspec", "~> 3.5
|
24
|
+
spec.add_development_dependency "rake", "~> 12.3"
|
25
|
+
spec.add_development_dependency "rspec", "~> 3.5"
|
26
26
|
spec.add_development_dependency "rspec-benchmark", "~> 0.6"
|
27
|
+
spec.add_development_dependency "net-smtp"
|
27
28
|
spec.add_development_dependency "pry"
|
28
29
|
spec.add_runtime_dependency "mail", "~> 2.5"
|
29
30
|
spec.add_runtime_dependency "activemodel", ">= 3.2"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: valid_email2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Micke Lisinge
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 12.3
|
33
|
+
version: '12.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 12.3
|
40
|
+
version: '12.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.5
|
47
|
+
version: '3.5'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.5
|
54
|
+
version: '3.5'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec-benchmark
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.6'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: net-smtp
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: pry
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -116,8 +130,8 @@ executables: []
|
|
116
130
|
extensions: []
|
117
131
|
extra_rdoc_files: []
|
118
132
|
files:
|
133
|
+
- ".github/workflows/ci.yaml"
|
119
134
|
- ".gitignore"
|
120
|
-
- ".travis.yml"
|
121
135
|
- CHANGELOG.md
|
122
136
|
- Gemfile
|
123
137
|
- LICENSE.txt
|
@@ -129,11 +143,13 @@ files:
|
|
129
143
|
- gemfiles/activemodel4.gemfile
|
130
144
|
- gemfiles/activemodel5.gemfile
|
131
145
|
- gemfiles/activemodel6.gemfile
|
146
|
+
- gemfiles/activemodel7.gemfile
|
132
147
|
- lib/valid_email2.rb
|
133
148
|
- lib/valid_email2/address.rb
|
134
149
|
- lib/valid_email2/email_validator.rb
|
135
150
|
- lib/valid_email2/version.rb
|
136
151
|
- pull_mailchecker_emails.rb
|
152
|
+
- spec/address_spec.rb
|
137
153
|
- spec/benchmark_spec.rb
|
138
154
|
- spec/spec_helper.rb
|
139
155
|
- spec/valid_email2_spec.rb
|
@@ -157,12 +173,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
173
|
- !ruby/object:Gem::Version
|
158
174
|
version: '0'
|
159
175
|
requirements: []
|
160
|
-
rubygems_version: 3.
|
176
|
+
rubygems_version: 3.3.3
|
161
177
|
signing_key:
|
162
178
|
specification_version: 4
|
163
179
|
summary: ActiveModel validation for email. Including MX lookup and disposable email
|
164
180
|
blacklist
|
165
181
|
test_files:
|
182
|
+
- spec/address_spec.rb
|
166
183
|
- spec/benchmark_spec.rb
|
167
184
|
- spec/spec_helper.rb
|
168
185
|
- spec/valid_email2_spec.rb
|
data/.travis.yml
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
sudo: false
|
4
|
-
|
5
|
-
rvm:
|
6
|
-
- 3.0
|
7
|
-
- 2.7
|
8
|
-
- 2.6
|
9
|
-
- 2.5
|
10
|
-
|
11
|
-
gemfile:
|
12
|
-
- gemfiles/activemodel5.gemfile
|
13
|
-
- gemfiles/activemodel6.gemfile
|
14
|
-
|
15
|
-
jobs:
|
16
|
-
exclude:
|
17
|
-
- rvm: 3.0
|
18
|
-
gemfile: gemfiles/activemodel5.gemfile
|
19
|
-
|
20
|
-
before_install:
|
21
|
-
- gem install bundler
|