heycarsten-email-veracity 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +1 -1
- data/Rakefile +1 -2
- data/init.rb +1 -1
- data/lib/email_veracity.rb +1 -1
- data/lib/email_veracity/address.rb +10 -13
- data/lib/email_veracity/config.rb +1 -5
- data/lib/email_veracity/core_extensions.rb +1 -3
- data/lib/email_veracity/domain.rb +17 -20
- data/lib/email_veracity/resolver.rb +13 -16
- data/lib/email_veracity/server.rb +1 -3
- data/lib/email_veracity/validatability.rb +13 -16
- data/test/mocks/class_with_validation_mock.rb +1 -1
- data/test/test_helper.rb +2 -2
- data/test/unit/address_test.rb +5 -4
- data/test/unit/config_test.rb +1 -1
- data/test/unit/core_extensions_test.rb +1 -1
- data/test/unit/domain_test.rb +5 -4
- data/test/unit/resolver_test.rb +1 -1
- data/test/unit/server_test.rb +1 -1
- data/test/unit/validatability_test.rb +1 -1
- metadata +1 -1
data/LICENSE
CHANGED
@@ -16,4 +16,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
16
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
17
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
18
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
THE SOFTWARE.
|
19
|
+
THE SOFTWARE.
|
data/Rakefile
CHANGED
data/init.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require 'email_veracity'
|
1
|
+
require 'email_veracity'
|
data/lib/email_veracity.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
module EmailVeracity
|
2
|
-
|
3
|
-
|
4
2
|
class Address
|
5
3
|
|
6
4
|
include Validatability
|
@@ -25,17 +23,16 @@ module EmailVeracity
|
|
25
23
|
end
|
26
24
|
|
27
25
|
protected
|
28
|
-
def validate!
|
29
|
-
add_error(:malformed) if !pattern_valid?
|
30
|
-
return unless Config[:lookup]
|
31
|
-
add_errors(domain.errors)
|
32
|
-
end
|
33
26
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
27
|
+
def validate!
|
28
|
+
add_error(:malformed) if !pattern_valid?
|
29
|
+
return unless Config[:lookup]
|
30
|
+
add_errors(domain.errors)
|
31
|
+
end
|
39
32
|
|
33
|
+
def pattern_valid?
|
34
|
+
@email_address =~ Config[:valid_pattern]
|
35
|
+
end
|
40
36
|
|
41
|
-
end
|
37
|
+
end
|
38
|
+
end
|
@@ -1,6 +1,4 @@
|
|
1
1
|
module EmailVeracity
|
2
|
-
|
3
|
-
|
4
2
|
class Domain
|
5
3
|
|
6
4
|
include Validatability
|
@@ -46,24 +44,23 @@ module EmailVeracity
|
|
46
44
|
end
|
47
45
|
|
48
46
|
protected
|
49
|
-
def validate!
|
50
|
-
return if whitelisted?
|
51
|
-
add_error(:blacklisted) if blacklisted? &&
|
52
|
-
Config[:enforce_blacklist]
|
53
|
-
add_error(:no_address_servers) if address_servers.empty? &&
|
54
|
-
Config.enforce_lookup?(:a)
|
55
|
-
add_error(:no_exchange_servers) if exchange_servers.empty? &&
|
56
|
-
Config.enforce_lookup?(:mx)
|
57
|
-
end
|
58
47
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
48
|
+
def validate!
|
49
|
+
return if whitelisted?
|
50
|
+
add_error(:blacklisted) if blacklisted? &&
|
51
|
+
Config[:enforce_blacklist]
|
52
|
+
add_error(:no_address_servers) if address_servers.empty? &&
|
53
|
+
Config.enforce_lookup?(:a)
|
54
|
+
add_error(:no_exchange_servers) if exchange_servers.empty? &&
|
55
|
+
Config.enforce_lookup?(:mx)
|
56
|
+
end
|
67
57
|
|
58
|
+
def servers_in(record)
|
59
|
+
return [] if name.blank?
|
60
|
+
Resolver.get_servers_for(name, record)
|
61
|
+
rescue DomainResourcesTimeoutError
|
62
|
+
add_error :timed_out
|
63
|
+
end
|
68
64
|
|
69
|
-
end
|
65
|
+
end
|
66
|
+
end
|
@@ -1,6 +1,4 @@
|
|
1
1
|
module EmailVeracity
|
2
|
-
|
3
|
-
|
4
2
|
class Resolver
|
5
3
|
|
6
4
|
RECORD_NAMES_TO_RESOLVE_MAP = {
|
@@ -26,21 +24,20 @@ module EmailVeracity
|
|
26
24
|
end
|
27
25
|
|
28
26
|
protected
|
29
|
-
def Resolver.get_resources_for(domain_name, record = :a)
|
30
|
-
Resolv::DNS.open do |server|
|
31
|
-
record_map = RECORD_NAMES_TO_RESOLVE_MAP[record]
|
32
|
-
resources = server.getresources(domain_name, record_map[:constant])
|
33
|
-
resources_to_servers(resources, record_map[:method])
|
34
|
-
end
|
35
|
-
end
|
36
27
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
28
|
+
def Resolver.get_resources_for(domain_name, record = :a)
|
29
|
+
Resolv::DNS.open do |server|
|
30
|
+
record_map = RECORD_NAMES_TO_RESOLVE_MAP[record]
|
31
|
+
resources = server.getresources(domain_name, record_map[:constant])
|
32
|
+
resources_to_servers(resources, record_map[:method])
|
41
33
|
end
|
34
|
+
end
|
42
35
|
|
43
|
-
|
44
|
-
|
36
|
+
def Resolver.resources_to_servers(resources, resolve_method)
|
37
|
+
resources.inject([]) do |array, resource|
|
38
|
+
array << resource.method(resolve_method).call.to_s.strip
|
39
|
+
end.reject_blank_items
|
40
|
+
end
|
45
41
|
|
46
|
-
end
|
42
|
+
end
|
43
|
+
end
|
@@ -1,6 +1,4 @@
|
|
1
1
|
module EmailVeracity
|
2
|
-
|
3
|
-
|
4
2
|
module Validatability
|
5
3
|
|
6
4
|
def valid?
|
@@ -14,21 +12,20 @@ module EmailVeracity
|
|
14
12
|
end
|
15
13
|
|
16
14
|
protected
|
17
|
-
def validate!
|
18
|
-
# Adds errors to the object.
|
19
|
-
end
|
20
15
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
def add_error(*new_errors)
|
26
|
-
@errors ||= []
|
27
|
-
@errors.concat(new_errors.flatten)
|
28
|
-
end
|
29
|
-
alias_method :add_errors, :add_error
|
16
|
+
def validate!
|
17
|
+
# Adds errors to the object.
|
18
|
+
end
|
30
19
|
|
31
|
-
|
20
|
+
def clear_errors!
|
21
|
+
@errors = []
|
22
|
+
end
|
32
23
|
|
24
|
+
def add_error(*new_errors)
|
25
|
+
@errors ||= []
|
26
|
+
@errors.concat(new_errors.flatten)
|
27
|
+
end
|
28
|
+
alias_method :add_errors, :add_error
|
33
29
|
|
34
|
-
end
|
30
|
+
end
|
31
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -10,7 +10,7 @@ class Test::Unit::TestCase
|
|
10
10
|
def domain_names
|
11
11
|
%w[ viarails.net heycarsten.com yahoo.com gmail.com savvica.com
|
12
12
|
learnhub.com github.com google.com rogers.com amd.com adobe.com
|
13
|
-
unspace.ca xerox.com webkit.org cooltown.net aiderss.com
|
13
|
+
unspace.ca xerox.com webkit.org cooltown.net aiderss.com delicious.com ]
|
14
14
|
end
|
15
15
|
|
16
16
|
def assert_empty(array, message = nil)
|
@@ -31,4 +31,4 @@ class Test::Unit::TestCase
|
|
31
31
|
assert_block(message) { !array.empty? }
|
32
32
|
end
|
33
33
|
|
34
|
-
end
|
34
|
+
end
|
data/test/unit/address_test.rb
CHANGED
@@ -44,8 +44,9 @@ class DefaultConfigurationAddressValidationsTest < Test::Unit::TestCase
|
|
44
44
|
end
|
45
45
|
|
46
46
|
private
|
47
|
-
def new_address(address = '')
|
48
|
-
EmailVeracity::Address.new(address)
|
49
|
-
end
|
50
47
|
|
51
|
-
|
48
|
+
def new_address(address = '')
|
49
|
+
EmailVeracity::Address.new(address)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
data/test/unit/config_test.rb
CHANGED
data/test/unit/domain_test.rb
CHANGED
@@ -94,8 +94,9 @@ class DomainTest < Test::Unit::TestCase
|
|
94
94
|
end
|
95
95
|
|
96
96
|
private
|
97
|
-
def new_domain(name = 'heycarsten.com')
|
98
|
-
EmailVeracity::Domain.new(name)
|
99
|
-
end
|
100
97
|
|
101
|
-
|
98
|
+
def new_domain(name = 'heycarsten.com')
|
99
|
+
EmailVeracity::Domain.new(name)
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
data/test/unit/resolver_test.rb
CHANGED
data/test/unit/server_test.rb
CHANGED