valid_email2 4.0.1 → 4.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activemodel', '~> 7.0'
4
+
5
+ gemspec path: '../'
@@ -38,14 +38,12 @@ module ValidEmail2
38
38
  return @valid unless @valid.nil?
39
39
  return false if @parse_error
40
40
 
41
- @valid = address.domain &&
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?('.')
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal:true
2
2
 
3
3
  module ValidEmail2
4
- VERSION = "4.0.1"
4
+ VERSION = "4.0.4"
5
5
  end
@@ -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
- url = "https://raw.githubusercontent.com/FGRibreau/mailchecker/master/list.txt"
18
- resp = Net::HTTP.get_response(URI.parse(url))
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
- remote_emails = resp.body.split("\n").flatten - whitelisted_emails
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.3"
25
- spec.add_development_dependency "rspec", "~> 3.5.0"
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.1
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: 2021-12-01 00:00:00.000000000 Z
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.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.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.0
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.0
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.2.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