truemail 3.3.0 → 4.0.0

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
  SHA256:
3
- metadata.gz: a285b1759ed0334ca5f0b1e26bf3975bad782629236b7ef8c347d49e3540f63b
4
- data.tar.gz: 20f84b22c347aaae67bfda81cadb67406bb0d4f215cee6976269cdc15cdbc9a9
3
+ metadata.gz: ed0e59cea3a673490eafbb863f308069acb63a69ee18a2083ffe975ad9c4ee18
4
+ data.tar.gz: 04fb9537d1060749f68e62a0753d7516fdde823af45840799a17d64fb42ac696
5
5
  SHA512:
6
- metadata.gz: 9c1e73140bbc0304ddcbb6cd68b84f1f3e75bf14237a87a6bd89054253f022e630877c2b478418ee23c7214702eea0fdf1505ead39d84b1b75f9350c4c19cf1c
7
- data.tar.gz: 7d99710ab7c9bdc72c37172f7fae87bc6a350d7a2e1befcd31681e2d3bf14ecf150bdbff01b07249904288bd57ea9bbebc007915b7ba5652659d90b99e466c74
6
+ metadata.gz: 79d3fc5ebe271b6c4dd8540f192d98adb7dbb8df4febcd19bd657f462587f7815dc7f0cd6283eac863b111f693b6e1b3df4132f5ce432eeadc53c33c2244f61d
7
+ data.tar.gz: c9088c89aa863e29cf37b7ef917cd653195b36cb075b9302804ff872cec1ff63a6f1fc837776f7a316bba4f7ab95f2a7b2022eba610967021543465e1bdb70f0
@@ -5,6 +5,7 @@ module Truemail
5
5
  class Mx < Truemail::Validate::Base
6
6
  ERROR = 'target host(s) not found'
7
7
  NULL_MX_RECORD = 'null_mx_record'
8
+ IDNA_PREFIX = 'xn--'
8
9
 
9
10
  def run
10
11
  return false unless Truemail::Validate::Regex.check(result)
@@ -15,8 +16,16 @@ module Truemail
15
16
 
16
17
  private
17
18
 
19
+ def email_domain_idn_safe?(result_domain)
20
+ return true if result_domain.ascii_only?
21
+ result_domain.split('.').zip(domain.split('.')).all? do |original_label, ascii_label|
22
+ original_label.ascii_only? || ascii_label.start_with?(Truemail::Validate::Mx::IDNA_PREFIX)
23
+ end
24
+ end
25
+
18
26
  def email_domain_valid?
19
- Truemail::RegexConstant::REGEX_DOMAIN_PATTERN.match?(result.domain)
27
+ result_domain = result.domain
28
+ Truemail::RegexConstant::REGEX_DOMAIN_PATTERN.match?(result_domain) && email_domain_idn_safe?(result_domain)
20
29
  end
21
30
 
22
31
  def host_extractor_methods
@@ -8,7 +8,7 @@ module Truemail
8
8
  attr_reader :smtp_results
9
9
 
10
10
  def initialize(result)
11
- super(result)
11
+ super
12
12
  @smtp_results = []
13
13
  end
14
14
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Truemail
4
- VERSION = '3.3.0'
4
+ VERSION = '4.0.0'
5
5
  end
data/truemail.gemspec CHANGED
@@ -24,20 +24,22 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  current_ruby_version = ::Gem::Version.new(::RUBY_VERSION)
26
26
  ffaker_version = current_ruby_version >= ::Gem::Version.new('3.0.0') ? '~> 2.23' : '~> 2.21'
27
+ webmock_version = current_ruby_version >= ::Gem::Version.new('2.6.0') ? '~> 3.30' : '~> 3.23'
27
28
 
28
29
  spec.required_ruby_version = '>= 2.5.0'
29
30
  spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(bin|lib)/|.ruby-version|truemail.gemspec|LICENSE}) }
30
31
  spec.require_paths = %w[lib]
31
32
 
32
- spec.add_runtime_dependency 'net-smtp', '~> 0.4.0.1' if current_ruby_version >= ::Gem::Version.new('3.1.0')
33
+ spec.add_runtime_dependency 'logger', '>= 1.7' if current_ruby_version >= ::Gem::Version.new('4.0.0')
34
+ spec.add_runtime_dependency 'net-smtp', '>= 0.5.2' if current_ruby_version >= ::Gem::Version.new('3.1.0')
33
35
  spec.add_runtime_dependency 'simpleidn', '~> 0.2.1'
34
36
 
35
- spec.add_development_dependency 'dns_mock', '~> 1.6', '>= 1.6.2'
37
+ spec.add_development_dependency 'dns_mock', '~> 1.7', '>= 1.7.1'
36
38
  spec.add_development_dependency 'ffaker', ffaker_version
37
39
  spec.add_development_dependency 'json_matchers', '~> 0.11.1'
38
- spec.add_development_dependency 'rake', '~> 13.1'
39
- spec.add_development_dependency 'rspec', '~> 3.13'
40
- spec.add_development_dependency 'smtp_mock', '~> 1.4'
40
+ spec.add_development_dependency 'rake', '>= 13.4.2'
41
+ spec.add_development_dependency 'rspec', '>= 3.13.2'
42
+ spec.add_development_dependency 'smtp_mock', '~> 1.4', '>= 1.4.1'
41
43
  spec.add_development_dependency 'truemail-rspec', '~> 1.3', '>= 1.3.1'
42
- spec.add_development_dependency 'webmock', '~> 3.20'
44
+ spec.add_development_dependency 'webmock', webmock_version
43
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: truemail
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladislav Trotsenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-26 00:00:00.000000000 Z
11
+ date: 2026-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simpleidn
@@ -30,20 +30,20 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.6'
33
+ version: '1.7'
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 1.6.2
36
+ version: 1.7.1
37
37
  type: :development
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - "~>"
42
42
  - !ruby/object:Gem::Version
43
- version: '1.6'
43
+ version: '1.7'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 1.6.2
46
+ version: 1.7.1
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: ffaker
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -76,30 +76,30 @@ dependencies:
76
76
  name: rake
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '13.1'
81
+ version: 13.4.2
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '13.1'
88
+ version: 13.4.2
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rspec
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: '3.13'
95
+ version: 3.13.2
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - "~>"
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: '3.13'
102
+ version: 3.13.2
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: smtp_mock
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -107,6 +107,9 @@ dependencies:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
109
  version: '1.4'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 1.4.1
110
113
  type: :development
111
114
  prerelease: false
112
115
  version_requirements: !ruby/object:Gem::Requirement
@@ -114,6 +117,9 @@ dependencies:
114
117
  - - "~>"
115
118
  - !ruby/object:Gem::Version
116
119
  version: '1.4'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 1.4.1
117
123
  - !ruby/object:Gem::Dependency
118
124
  name: truemail-rspec
119
125
  requirement: !ruby/object:Gem::Requirement
@@ -140,14 +146,14 @@ dependencies:
140
146
  requirements:
141
147
  - - "~>"
142
148
  - !ruby/object:Gem::Version
143
- version: '3.20'
149
+ version: '3.23'
144
150
  type: :development
145
151
  prerelease: false
146
152
  version_requirements: !ruby/object:Gem::Requirement
147
153
  requirements:
148
154
  - - "~>"
149
155
  - !ruby/object:Gem::Version
150
- version: '3.20'
156
+ version: '3.23'
151
157
  description: Configurable framework agnostic plain Ruby email validator. Verify email
152
158
  via Regex, DNS, SMTP and even more.
153
159
  email: