valid_email2 4.0.3 → 4.0.5

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.
@@ -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.3"
4
+ VERSION = "4.0.5"
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 freemail.hu 139.com
12
+ onit.com asics.com freemail.hu 139.com mail2world.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
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.3
4
+ version: 4.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micke Lisinge
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-19 00:00:00.000000000 Z
11
+ date: 2023-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -130,8 +130,8 @@ executables: []
130
130
  extensions: []
131
131
  extra_rdoc_files: []
132
132
  files:
133
+ - ".github/workflows/ci.yaml"
133
134
  - ".gitignore"
134
- - ".travis.yml"
135
135
  - CHANGELOG.md
136
136
  - Gemfile
137
137
  - LICENSE.txt
@@ -143,11 +143,13 @@ files:
143
143
  - gemfiles/activemodel4.gemfile
144
144
  - gemfiles/activemodel5.gemfile
145
145
  - gemfiles/activemodel6.gemfile
146
+ - gemfiles/activemodel7.gemfile
146
147
  - lib/valid_email2.rb
147
148
  - lib/valid_email2/address.rb
148
149
  - lib/valid_email2/email_validator.rb
149
150
  - lib/valid_email2/version.rb
150
151
  - pull_mailchecker_emails.rb
152
+ - spec/address_spec.rb
151
153
  - spec/benchmark_spec.rb
152
154
  - spec/spec_helper.rb
153
155
  - spec/valid_email2_spec.rb
@@ -171,12 +173,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
173
  - !ruby/object:Gem::Version
172
174
  version: '0'
173
175
  requirements: []
174
- rubygems_version: 3.3.3
176
+ rubygems_version: 3.4.1
175
177
  signing_key:
176
178
  specification_version: 4
177
179
  summary: ActiveModel validation for email. Including MX lookup and disposable email
178
180
  blacklist
179
181
  test_files:
182
+ - spec/address_spec.rb
180
183
  - spec/benchmark_spec.rb
181
184
  - spec/spec_helper.rb
182
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