fake_email_validator 1.0.0 → 1.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca63fcd2105a1e1f8bc6b78c54c056a719c4b853
4
- data.tar.gz: 17a0b91cb0856467202eaf055f5f722bb4f749de
3
+ metadata.gz: 599be7cd0cf389048ae32e54a75a0ed0c69707c5
4
+ data.tar.gz: 2ab99dd0fa353f10503dfc672ca82577af773b90
5
5
  SHA512:
6
- metadata.gz: 6bd7efa9885d1732242438728879f6ee3ca6b92b3a6a8534e4a931c8e01a2ccf3c18a5a598ea2f4a6838c0cba17e19d2a52d0005b6d71b0ae38f67054fd352f0
7
- data.tar.gz: 20eec5d90e7a75bacf2ed3b04a40fdf6922467b9bca2cf315c224d086627df529937443e01538c6f8feb5d4e10be84deb82f5e3c19693a6ad076415c75d5be32
6
+ metadata.gz: 5f7e551c761e4e96d83a6c9287533c69876afff1d266dfae2307957995fdc2efd4e59fc489c76e7adaeb3da4839d1dce0e64e5c1c7b0d0436b55d9c01be3a863
7
+ data.tar.gz: fdbca74c44624eba2f4e13f565f75d8376d16dac507f2bab0124175396dc6c0e9c3d0e88c24063ef14c8f346ac4ee185544e6fed807c4f7b7879841b122477a7
data/README.md CHANGED
@@ -1,26 +1,24 @@
1
1
  # fake_email_validator [![Build Status](https://travis-ci.org/maxd/fake_email_validator.png?branch=master)](https://travis-ci.org/maxd/fake_email_validator)
2
2
 
3
- E-Mail validator for Rails to block services like mailinator.com
3
+ E-Mail validator for block services like mailinator.com, dropmail.me, etc. during new user registration.
4
4
 
5
5
  ## Installation
6
6
 
7
7
  Add this line to your application's Gemfile:
8
8
 
9
- gem 'fake_email_validator'
9
+ gem 'fake_email_validator', '~> 1.0.1'
10
10
 
11
- And then execute:
11
+ ## How to use?
12
12
 
13
- $ bundle
13
+ Just add validator to your User model:
14
14
 
15
- Or install it yourself as:
15
+ validates :email, fake_email: true
16
16
 
17
- $ gem install fake_email_validator
17
+ ## FAQ
18
18
 
19
- ## How to use?
19
+ ### Where is a list of blocked domains?
20
20
 
21
- Add validator to your User model:
22
-
23
- validates :email, fake_email: true
21
+ It is [here](https://github.com/maxd/fake_email_validator/blob/master/config/fake_domains.list).
24
22
 
25
23
  ## Contributing
26
24
 
@@ -4,11 +4,11 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'fake_email_validator'
7
- spec.version = '1.0.0'
7
+ spec.version = '1.0.1'
8
8
  spec.authors = ['Maxim Dobryakov']
9
9
  spec.email = ['maxim.dobryakov@gmail.com']
10
- spec.summary = %q{E-Mail validator for Rails to block fake emails}
11
- spec.description = %q{E-Mail validator for Rails to block services like mailinator.com}
10
+ spec.summary = %q{E-Mail validator for Rails to block fake email domains}
11
+ spec.description = %q{E-Mail validator for block services like mailinator.com, dropmail.me, etc. during new user registration.}
12
12
  spec.homepage = 'https://github.com/maxd/fake_email_validator'
13
13
  spec.license = 'MIT'
14
14
 
@@ -0,0 +1,24 @@
1
+ require 'mail'
2
+
3
+ class FakeEmailService
4
+
5
+ def initialize
6
+ fake_domains_file = File.expand_path('../../config/fake_domains.list', __FILE__)
7
+ @fake_domains = File.readlines(fake_domains_file).map {|fd| fd.strip.downcase }
8
+ end
9
+
10
+ def is_fake_email?(email)
11
+ email_address = Mail::Address.new(email)
12
+
13
+ domain = email_address.domain.strip.downcase
14
+ domain_parts = domain.split('.')
15
+
16
+ second_level_domain = Array(domain_parts[-2..-1]).join('.')
17
+ third_level_domain = Array(domain_parts[-3..-1]).join('.')
18
+
19
+ domains = [domain, second_level_domain, third_level_domain].compact
20
+
21
+ @fake_domains.any? {|fake_domain| domains.include?(fake_domain) }
22
+ end
23
+
24
+ end
@@ -1,26 +1,20 @@
1
1
  require 'active_model'
2
- require 'mail'
2
+ require 'fake_email_service'
3
3
 
4
4
  class FakeEmailValidator < ActiveModel::EachValidator
5
5
 
6
6
  I18N_SCOPE = 'fake_email_validator.validations.email'
7
7
 
8
+ cattr_accessor :fake_email_service do
9
+ FakeEmailService.new
10
+ end
11
+
8
12
  def initialize(options)
9
13
  super(options)
10
-
11
- fake_domains_file = File.expand_path('../../config/fake_domains.list', __FILE__)
12
- @fake_domains = File.readlines(fake_domains_file).map {|fd| fd.strip.downcase }
13
14
  end
14
15
 
15
16
  def validate_each(record, attribute, value)
16
- email = Mail::Address.new(value)
17
-
18
- domain = email.domain.strip.downcase
19
- second_level_domain = domain.split('.')[-2..-1].join('.')
20
-
21
- is_fake = @fake_domains.include?(domain) || @fake_domains.include?(second_level_domain)
22
-
23
- record.errors.add attribute, I18n.t(:fake, scope: I18N_SCOPE) if is_fake
17
+ record.errors.add attribute, I18n.t(:fake, scope: I18N_SCOPE) if fake_email_service.is_fake_email?(value)
24
18
  rescue Mail::Field::ParseError
25
19
  record.errors.add attribute, I18n.t(:invalid, scope: I18N_SCOPE)
26
20
  end
@@ -42,7 +42,7 @@ class TestFakeEmailValidator < Minitest::Test
42
42
  assert_equal 'is fake domain', @user.errors[:email].first
43
43
  end
44
44
 
45
- def test_real_email_1
45
+ def test_real_email
46
46
  @user.email = 'test@gmail.com'
47
47
 
48
48
  assert @user.valid?
metadata CHANGED
@@ -1,94 +1,95 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fake_email_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxim Dobryakov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-09 00:00:00.000000000 Z
11
+ date: 2014-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.5'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10'
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
40
  version: '10'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '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
54
  version: '5'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: activemodel
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mail
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description: E-Mail validator for Rails to block services like mailinator.com
83
+ description: E-Mail validator for block services like mailinator.com, dropmail.me,
84
+ etc. during new user registration.
84
85
  email:
85
86
  - maxim.dobryakov@gmail.com
86
87
  executables: []
87
88
  extensions: []
88
89
  extra_rdoc_files: []
89
90
  files:
90
- - .gitignore
91
- - .travis.yml
91
+ - ".gitignore"
92
+ - ".travis.yml"
92
93
  - Gemfile
93
94
  - LICENSE.txt
94
95
  - README.md
@@ -96,6 +97,7 @@ files:
96
97
  - config/fake_domains.list
97
98
  - config/locales/en.yml
98
99
  - fake_email_validator.gemspec
100
+ - lib/fake_email_service.rb
99
101
  - lib/fake_email_validator.rb
100
102
  - test/minitest_helper.rb
101
103
  - test/test_fake_email_validator.rb
@@ -109,12 +111,12 @@ require_paths:
109
111
  - lib
110
112
  required_ruby_version: !ruby/object:Gem::Requirement
111
113
  requirements:
112
- - - '>='
114
+ - - ">="
113
115
  - !ruby/object:Gem::Version
114
116
  version: '0'
115
117
  required_rubygems_version: !ruby/object:Gem::Requirement
116
118
  requirements:
117
- - - '>='
119
+ - - ">="
118
120
  - !ruby/object:Gem::Version
119
121
  version: '0'
120
122
  requirements: []
@@ -122,7 +124,7 @@ rubyforge_project:
122
124
  rubygems_version: 2.2.2
123
125
  signing_key:
124
126
  specification_version: 4
125
- summary: E-Mail validator for Rails to block fake emails
127
+ summary: E-Mail validator for Rails to block fake email domains
126
128
  test_files:
127
129
  - test/minitest_helper.rb
128
130
  - test/test_fake_email_validator.rb