truemail 0.1.1.3 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +30 -1
- data/.codeclimate.yml +10 -0
- data/.reek.yml +10 -0
- data/.rubocop.yml +3 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +1 -1
- data/README.md +179 -34
- data/Rakefile +2 -0
- data/bin/console +2 -0
- data/lib/truemail/configuration.rb +19 -8
- data/lib/truemail/validate/base.rb +1 -1
- data/lib/truemail/validate/smtp.rb +12 -0
- data/lib/truemail/validate/smtp/request.rb +1 -2
- data/lib/truemail/version.rb +1 -1
- data/truemail.gemspec +7 -5
- metadata +12 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b17be2ecdaa03574f1d38746d67782da7973a2bce092a13a5c6f88ccafbebfed
|
4
|
+
data.tar.gz: 88fcfee420edd6307fbafd9f7e53449d4568eea7a2eedb85603ed77ba194e813
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0228f7ab89021d79cf0a66e5c67c08e025df5b726011a60a787b81e4f3783d2898b2ffa59528cbb188e76fc1fa26f293302a28b731b3baeea1d0c216f982ca9a'
|
7
|
+
data.tar.gz: faed7cf45f3670b06262eb23f76442df7819d8f0d42d2a26eabf0412fe057a24ec756a521f99ec296aba69b16d9f1f8e960027124fd4438aba6788a507064d69
|
data/.circleci/config.yml
CHANGED
@@ -2,6 +2,8 @@ defaults: &defaults
|
|
2
2
|
working_directory: ~/truemail
|
3
3
|
docker:
|
4
4
|
- image: circleci/ruby:2.5.0-node
|
5
|
+
environment:
|
6
|
+
CC_TEST_REPORTER_ID: a98d23d6d916932ae11dbe5df36dee070173cbe376b68758901dcc289e098979
|
5
7
|
|
6
8
|
references:
|
7
9
|
restore_bundle_cache: &restore_bundle_cache
|
@@ -20,6 +22,13 @@ references:
|
|
20
22
|
paths:
|
21
23
|
- vendor/bundle
|
22
24
|
|
25
|
+
install_codeclimate_reporter: &install_codeclimate_reporter
|
26
|
+
run:
|
27
|
+
name: Install Code Climate Test Reporter
|
28
|
+
command: |
|
29
|
+
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
30
|
+
chmod +x ./cc-test-reporter
|
31
|
+
|
23
32
|
version: 2
|
24
33
|
jobs:
|
25
34
|
linters:
|
@@ -47,10 +56,30 @@ jobs:
|
|
47
56
|
- <<: *restore_bundle_cache
|
48
57
|
- <<: *bundle_install
|
49
58
|
- <<: *save_bundle_cache
|
59
|
+
- <<: *install_codeclimate_reporter
|
50
60
|
|
51
61
|
- run:
|
52
62
|
name: Running tests
|
53
|
-
command:
|
63
|
+
command: |
|
64
|
+
mkdir /tmp/test-results
|
65
|
+
./cc-test-reporter before-build
|
66
|
+
bundle exec rspec
|
67
|
+
|
68
|
+
- run:
|
69
|
+
name: Code Climate Test Coverage
|
70
|
+
command: |
|
71
|
+
./cc-test-reporter format-coverage -t simplecov -o "coverage/codeclimate.$CIRCLE_NODE_INDEX.json"
|
72
|
+
|
73
|
+
- store_test_results:
|
74
|
+
path: /tmp/test-results
|
75
|
+
|
76
|
+
- store_artifacts:
|
77
|
+
path: /tmp/test-results
|
78
|
+
destination: test-results
|
79
|
+
|
80
|
+
- deploy:
|
81
|
+
command: |
|
82
|
+
./cc-test-reporter sum-coverage --output - --parts $CIRCLE_NODE_TOTAL coverage/codeclimate.*.json | ./cc-test-reporter upload-coverage --debug --input -
|
54
83
|
|
55
84
|
workflows:
|
56
85
|
version: 2
|
data/.codeclimate.yml
ADDED
data/.reek.yml
CHANGED
@@ -5,6 +5,7 @@ detectors:
|
|
5
5
|
NestedIterators:
|
6
6
|
exclude:
|
7
7
|
- Truemail::ConfigurationHelper#configuration_block
|
8
|
+
- Truemail::Validate::Smtp#not_includes_user_not_found_errors
|
8
9
|
|
9
10
|
TooManyStatements:
|
10
11
|
exclude:
|
@@ -15,6 +16,10 @@ detectors:
|
|
15
16
|
exclude:
|
16
17
|
- Truemail::Configuration
|
17
18
|
|
19
|
+
Attribute:
|
20
|
+
exclude:
|
21
|
+
- Truemail::Configuration#smtp_safe_check
|
22
|
+
|
18
23
|
UtilityFunction:
|
19
24
|
exclude:
|
20
25
|
- Truemail::Validate::Smtp::Request#compose_from
|
@@ -23,3 +28,8 @@ detectors:
|
|
23
28
|
ControlParameter:
|
24
29
|
exclude:
|
25
30
|
- Truemail::GenerateEmailHelper#calculate_email_size
|
31
|
+
- Truemail::Validate::Base#success
|
32
|
+
|
33
|
+
FeatureEnvy:
|
34
|
+
exclude:
|
35
|
+
- Truemail::Validate::Smtp#not_includes_user_not_found_errors
|
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Truemail
|
2
2
|
|
3
|
-
[![Maintainability](https://api.codeclimate.com/v1/badges/657aa241399927dcd2e2/maintainability)](https://codeclimate.com/github/rubygarage/truemail/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/657aa241399927dcd2e2/test_coverage)](https://codeclimate.com/github/rubygarage/truemail/test_coverage) [![Gem Version](https://badge.fury.io/rb/truemail.svg)](https://badge.fury.io/rb/truemail) [![CircleCI](https://circleci.com/gh/rubygarage/truemail/tree/
|
3
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/657aa241399927dcd2e2/maintainability)](https://codeclimate.com/github/rubygarage/truemail/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/657aa241399927dcd2e2/test_coverage)](https://codeclimate.com/github/rubygarage/truemail/test_coverage) [![Gem Version](https://badge.fury.io/rb/truemail.svg)](https://badge.fury.io/rb/truemail) [![CircleCI](https://circleci.com/gh/rubygarage/truemail/tree/master.svg?style=svg)](https://circleci.com/gh/rubygarage/truemail/tree/master)
|
4
4
|
|
5
5
|
The Truemail gem helps you validate emails by regex pattern, presence of domain mx-records, and real existence of email account on a current email server.
|
6
6
|
|
@@ -39,6 +39,8 @@ Email validation is a tricky thing. There are a number of different ways to vali
|
|
39
39
|
To have an access for ```Truemail.configuration``` and gem features, you must configure it first as in the example below:
|
40
40
|
|
41
41
|
```ruby
|
42
|
+
require 'truemail'
|
43
|
+
|
42
44
|
Truemail.configure do |config|
|
43
45
|
# Required parameter. Must be an existing email on behalf of which verification will be performed
|
44
46
|
config.verifier_email = 'verifier@example.com'
|
@@ -61,6 +63,11 @@ Truemail.configure do |config|
|
|
61
63
|
# This configuration will be used over current or default validation type parameter
|
62
64
|
# All of validations for 'somedomain.com' will be processed with mx validation only
|
63
65
|
config.validation_type_for = { 'somedomain.com' => :mx }
|
66
|
+
|
67
|
+
# Optional parameter. This option will be parse bodies of SMTP errors. It will be helpful
|
68
|
+
# if SMTP server does not return an exact answer that the email does not exist
|
69
|
+
# By default this option is disabled, available for SMTP validation only.
|
70
|
+
config.smtp_safe_check = true
|
64
71
|
end
|
65
72
|
```
|
66
73
|
|
@@ -77,7 +84,8 @@ Truemail.configuration
|
|
77
84
|
@response_timeout=1,
|
78
85
|
@validation_type_by_domain={},
|
79
86
|
@verifier_domain="somedomain.com",
|
80
|
-
@verifier_email="verifier@example.com"
|
87
|
+
@verifier_email="verifier@example.com"
|
88
|
+
@smtp_safe_check=true>
|
81
89
|
```
|
82
90
|
|
83
91
|
#### Update configuration
|
@@ -95,7 +103,8 @@ Truemail.configuration
|
|
95
103
|
@response_timeout=4,
|
96
104
|
@validation_type_by_domain={},
|
97
105
|
@verifier_domain="somedomain.com",
|
98
|
-
@verifier_email="verifier@example.com"
|
106
|
+
@verifier_email="verifier@example.com",
|
107
|
+
@smtp_safe_check=true>
|
99
108
|
```
|
100
109
|
|
101
110
|
#### Reset configuration
|
@@ -120,21 +129,31 @@ Example of usage:
|
|
120
129
|
1. With default regex pattern
|
121
130
|
|
122
131
|
```ruby
|
123
|
-
|
132
|
+
require 'truemail'
|
133
|
+
|
134
|
+
Truemail.configure do |config|
|
124
135
|
config.verifier_email = 'verifier@example.com'
|
125
136
|
end
|
126
137
|
|
127
138
|
Truemail.validate('email@example.com', with: :regex)
|
128
139
|
|
129
140
|
=> #<Truemail::Validator:0x000055590cc9bdb8
|
130
|
-
|
131
|
-
|
141
|
+
@result=
|
142
|
+
#<struct Truemail::Validator::Result
|
143
|
+
success=true, email="email@example.com",
|
144
|
+
domain=nil,
|
145
|
+
mail_servers=[],
|
146
|
+
errors={},
|
147
|
+
smtp_debug=nil>,
|
148
|
+
@validation_type=:regex>
|
132
149
|
```
|
133
150
|
|
134
151
|
2. With custom regex pattern. You should define your custom regex pattern in a gem configuration before.
|
135
152
|
|
136
153
|
```ruby
|
137
|
-
|
154
|
+
require 'truemail'
|
155
|
+
|
156
|
+
Truemail.configure do |config|
|
138
157
|
config.verifier_email = 'verifier@example.com'
|
139
158
|
config.config.email_pattern = /regex_pattern/
|
140
159
|
end
|
@@ -142,7 +161,15 @@ end
|
|
142
161
|
Truemail.validate('email@example.com', with: :regex)
|
143
162
|
|
144
163
|
=> #<Truemail::Validator:0x000055590ca8b3e8
|
145
|
-
@result
|
164
|
+
@result=
|
165
|
+
#<struct Truemail::Validator::Result
|
166
|
+
success=true,
|
167
|
+
email="email@example.com",
|
168
|
+
domain=nil,
|
169
|
+
mail_servers=[],
|
170
|
+
errors={},
|
171
|
+
smtp_debug=nil>,
|
172
|
+
@validation_type=:regex>
|
146
173
|
```
|
147
174
|
|
148
175
|
#### MX validation
|
@@ -152,15 +179,24 @@ Validation by MX records is second validation level. It uses Regex validation be
|
|
152
179
|
Example of usage:
|
153
180
|
|
154
181
|
```ruby
|
155
|
-
|
182
|
+
require 'truemail'
|
183
|
+
|
184
|
+
Truemail.configure do |config|
|
156
185
|
config.verifier_email = 'verifier@example.com'
|
157
186
|
end
|
158
187
|
|
159
188
|
Truemail.validate('email@example.com', with: :mx)
|
160
189
|
|
161
190
|
=> #<Truemail::Validator:0x000055590c9c1c50
|
162
|
-
|
163
|
-
|
191
|
+
@result=
|
192
|
+
#<struct Truemail::Validator::Result
|
193
|
+
success=true,
|
194
|
+
email="email@example.com",
|
195
|
+
domain="example.com",
|
196
|
+
mail_servers=["mx1.example.com", "mx2.example.com"],
|
197
|
+
errors={},
|
198
|
+
smtp_debug=nil>,
|
199
|
+
@validation_type=:mx>
|
164
200
|
```
|
165
201
|
|
166
202
|
#### SMTP validation
|
@@ -173,8 +209,12 @@ SMTP validation is a final, third validation level. This type of validation trie
|
|
173
209
|
|
174
210
|
By default, you don't need pass with-parameter to use it. Example of usage is specified below:
|
175
211
|
|
212
|
+
With ```smtp_safe_check = false```
|
213
|
+
|
176
214
|
```ruby
|
177
|
-
|
215
|
+
require 'truemail'
|
216
|
+
|
217
|
+
Truemail.configure do |config|
|
178
218
|
config.verifier_email = 'verifier@example.com'
|
179
219
|
end
|
180
220
|
|
@@ -182,31 +222,136 @@ Truemail.validate('email@example.com')
|
|
182
222
|
|
183
223
|
# Successful SMTP validation
|
184
224
|
=> #<Truemail::Validator:0x000055590c4dc118
|
185
|
-
|
186
|
-
|
225
|
+
@result=
|
226
|
+
#<struct Truemail::Validator::Result
|
227
|
+
success=true,
|
228
|
+
email="email@example.com",
|
229
|
+
domain="example.com",
|
230
|
+
mail_servers=["mx1.example.com", "mx2.example.com"],
|
231
|
+
errors={},
|
232
|
+
smtp_debug=nil>,
|
233
|
+
@validation_type=:smtp>
|
234
|
+
|
235
|
+
# SMTP validation failed
|
236
|
+
=> #<Truemail::Validator:0x0000000002d5cee0
|
237
|
+
@result=
|
238
|
+
#<struct Truemail::Validator::Result
|
239
|
+
success=false,
|
240
|
+
email="email@example.com",
|
241
|
+
domain="example.com",
|
242
|
+
mail_servers=["mx1.example.com", "mx2.example.com", "mx3.example.com"],
|
243
|
+
errors={:smtp=>"smtp error"},
|
244
|
+
smtp_debug=
|
245
|
+
[#<Truemail::Validate::Smtp::Request:0x0000000002d49b10
|
246
|
+
@configuration=
|
247
|
+
#<Truemail::Configuration:0x0000000002d49930
|
248
|
+
@connection_timeout=2,
|
249
|
+
@email_pattern=/regex_pattern/,
|
250
|
+
@response_timeout=2,
|
251
|
+
@smtp_safe_check=false,
|
252
|
+
@validation_type_by_domain={},
|
253
|
+
@verifier_domain="example.com",
|
254
|
+
@verifier_email="verifier@example.com">,
|
255
|
+
@email="email@example.com",
|
256
|
+
@host="mx1.example.com",
|
257
|
+
@response=
|
258
|
+
#<struct Truemail::Validate::Smtp::Response
|
259
|
+
port_opened=true,
|
260
|
+
connection=true,
|
261
|
+
helo=
|
262
|
+
#<Net::SMTP::Response:0x0000000002d5aca8
|
263
|
+
@status="250",
|
264
|
+
@string="250 mx1.example.com Hello example.com\n">,
|
265
|
+
mailfrom=
|
266
|
+
#<Net::SMTP::Response:0x0000000002d5a618
|
267
|
+
@status="250",
|
268
|
+
@string="250 OK\n">,
|
269
|
+
rcptto=false,
|
270
|
+
errors={:rcptto=>"550 User not found\n"}>>]>,
|
271
|
+
@validation_type=:smtp>
|
272
|
+
```
|
273
|
+
|
274
|
+
With ```smtp_safe_check = true```
|
275
|
+
|
276
|
+
```ruby
|
277
|
+
require 'truemail'
|
278
|
+
|
279
|
+
Truemail.configure do |config|
|
280
|
+
config.verifier_email = 'verifier@example.com'
|
281
|
+
config.smtp_safe_check = true
|
282
|
+
end
|
283
|
+
|
284
|
+
Truemail.validate('email@example.com')
|
285
|
+
|
286
|
+
# Successful SMTP validation
|
287
|
+
=> #<Truemail::Validator:0x0000000002ca2c70
|
288
|
+
@result=
|
289
|
+
#<struct Truemail::Validator::Result
|
290
|
+
success=true,
|
291
|
+
email="email@example.com",
|
292
|
+
domain="example.com",
|
293
|
+
mail_servers=["mx1.example.com"],
|
294
|
+
errors={},
|
295
|
+
smtp_debug=
|
296
|
+
[#<Truemail::Validate::Smtp::Request:0x0000000002c95d40
|
297
|
+
@configuration=
|
298
|
+
#<Truemail::Configuration:0x0000000002c95b38
|
299
|
+
@connection_timeout=2,
|
300
|
+
@email_pattern=/regex_pattern/,
|
301
|
+
@response_timeout=2,
|
302
|
+
@smtp_safe_check=true,
|
303
|
+
@validation_type_by_domain={},
|
304
|
+
@verifier_domain="example.com",
|
305
|
+
@verifier_email="verifier@example.com">,
|
306
|
+
@email="email@example.com",
|
307
|
+
@host="mx1.example.com",
|
308
|
+
@response=
|
309
|
+
#<struct Truemail::Validate::Smtp::Response
|
310
|
+
port_opened=true,
|
311
|
+
connection=false,
|
312
|
+
helo=
|
313
|
+
#<Net::SMTP::Response:0x0000000002c934c8
|
314
|
+
@status="250",
|
315
|
+
@string="250 mx1.example.com\n">,
|
316
|
+
mailfrom=false,
|
317
|
+
rcptto=nil,
|
318
|
+
errors={:mailfrom=>"554 5.7.1 Client host blocked\n", :connection=>"server dropped connection after response"}>>,]>,
|
319
|
+
@validation_type=:smtp>
|
187
320
|
|
188
321
|
# SMTP validation failed
|
189
|
-
=> #<Truemail::Validator:
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
email="email@example.com",
|
194
|
-
domain="example.com",
|
195
|
-
mail_servers=["mx1.example.com", "mx2.example.com"],
|
196
|
-
errors={:smtp=>"smtp error"},
|
197
|
-
smtp_debug=
|
198
|
-
[#<struct Truemail::Validate::Smtp::Request
|
199
|
-
host="mx1.example.com",
|
322
|
+
=> #<Truemail::Validator:0x0000000002d5cee0
|
323
|
+
@result=
|
324
|
+
#<struct Truemail::Validator::Result
|
325
|
+
success=false,
|
200
326
|
email="email@example.com",
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
327
|
+
domain="example.com",
|
328
|
+
mail_servers=["mx1.example.com", "mx2.example.com", "mx3.example.com"],
|
329
|
+
errors={:smtp=>"smtp error"},
|
330
|
+
smtp_debug=
|
331
|
+
[#<Truemail::Validate::Smtp::Request:0x0000000002d49b10
|
332
|
+
@configuration=
|
333
|
+
#<Truemail::Configuration:0x0000000002d49930
|
334
|
+
@connection_timeout=2,
|
335
|
+
@email_pattern=/regex_pattern/,
|
336
|
+
@response_timeout=2,
|
337
|
+
@smtp_safe_check=true,
|
338
|
+
@validation_type_by_domain={},
|
339
|
+
@verifier_domain="example.com",
|
340
|
+
@verifier_email="verifier@example.com">,
|
341
|
+
@email="email@example.com",
|
342
|
+
@host="mx1.example.com",
|
343
|
+
@response=
|
344
|
+
#<struct Truemail::Validate::Smtp::Response
|
345
|
+
port_opened=true,
|
346
|
+
connection=true,
|
347
|
+
helo=
|
348
|
+
#<Net::SMTP::Response:0x0000000002d5aca8
|
349
|
+
@status="250",
|
350
|
+
@string="250 mx1.example.com Hello example.com\n">,
|
351
|
+
mailfrom=#<Net::SMTP::Response:0x0000000002d5a618 @status="250", @string="250 OK\n">,
|
352
|
+
rcptto=false,
|
353
|
+
errors={:rcptto=>"550 User not found\n"}>>]>,
|
354
|
+
@validation_type=:smtp>
|
210
355
|
```
|
211
356
|
|
212
357
|
## ToDo
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -12,11 +12,14 @@ module Truemail
|
|
12
12
|
:response_timeout,
|
13
13
|
:validation_type_by_domain
|
14
14
|
|
15
|
+
attr_accessor :smtp_safe_check
|
16
|
+
|
15
17
|
def initialize
|
16
18
|
@email_pattern = Truemail::RegexConstant::REGEX_EMAIL_PATTERN
|
17
19
|
@connection_timeout = DEFAULT_CONNECTION_TIMEOUT
|
18
20
|
@response_timeout = DEFAULT_RESPONSE_TIMEOUT
|
19
21
|
@validation_type_by_domain = {}
|
22
|
+
@smtp_safe_check = false
|
20
23
|
end
|
21
24
|
|
22
25
|
def email_pattern=(regex_pattern)
|
@@ -58,17 +61,25 @@ module Truemail
|
|
58
61
|
raise Truemail::ArgumentError.new(argument, method) unless constant.match?(argument.to_s)
|
59
62
|
end
|
60
63
|
|
61
|
-
def
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
def default_verifier_domain
|
65
|
+
self.verifier_domain ||= verifier_email[Truemail::RegexConstant::REGEX_EMAIL_PATTERN, 3]
|
66
|
+
end
|
67
|
+
|
68
|
+
def check_domain(domain)
|
69
|
+
raise Truemail::ArgumentError.new(domain, 'domain') unless
|
70
|
+
Truemail::RegexConstant::REGEX_DOMAIN_PATTERN.match?(domain.to_s)
|
71
|
+
end
|
72
|
+
|
73
|
+
def check_validation_type(validation_type)
|
74
|
+
raise Truemail::ArgumentError.new(validation_type, 'validation type') unless
|
66
75
|
Truemail::Validator::VALIDATION_TYPES.include?(validation_type)
|
67
|
-
end
|
68
76
|
end
|
69
77
|
|
70
|
-
def
|
71
|
-
|
78
|
+
def validate_validation_type(settings)
|
79
|
+
settings.each do |domain, validation_type|
|
80
|
+
check_domain(domain)
|
81
|
+
check_validation_type(validation_type)
|
82
|
+
end
|
72
83
|
end
|
73
84
|
end
|
74
85
|
end
|
@@ -4,6 +4,7 @@ module Truemail
|
|
4
4
|
module Validate
|
5
5
|
class Smtp < Truemail::Validate::Base
|
6
6
|
ERROR = 'smtp error'
|
7
|
+
ERROR_BODY = /(?=.*550)(?=.*(user|account)).*/i
|
7
8
|
|
8
9
|
attr_reader :smtp_results
|
9
10
|
|
@@ -17,6 +18,7 @@ module Truemail
|
|
17
18
|
establish_smtp_connection
|
18
19
|
return true if success(success_response?)
|
19
20
|
result.smtp_debug = smtp_results
|
21
|
+
return true if success(not_includes_user_not_found_errors)
|
20
22
|
add_error(Truemail::Validate::Smtp::ERROR)
|
21
23
|
false
|
22
24
|
end
|
@@ -42,6 +44,16 @@ module Truemail
|
|
42
44
|
def success_response?
|
43
45
|
smtp_results.map(&:response).any?(&:rcptto)
|
44
46
|
end
|
47
|
+
|
48
|
+
def not_includes_user_not_found_errors
|
49
|
+
return unless Truemail.configuration.smtp_safe_check
|
50
|
+
result.smtp_debug.map(&:response).map(&:errors).all? do |errors|
|
51
|
+
next true unless errors.key?(:rcptto)
|
52
|
+
errors.slice(:rcptto).values.none? do |error|
|
53
|
+
Truemail::Validate::Smtp::ERROR_BODY.match?(error)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
45
57
|
end
|
46
58
|
end
|
47
59
|
end
|
@@ -21,8 +21,7 @@ module Truemail
|
|
21
21
|
|
22
22
|
def check_port
|
23
23
|
Timeout.timeout(configuration.connection_timeout) do
|
24
|
-
return response.port_opened =
|
25
|
-
!TCPSocket.new(host, Truemail::Validate::Smtp::Request::SMTP_PORT).close
|
24
|
+
return response.port_opened = !TCPSocket.new(host, Truemail::Validate::Smtp::Request::SMTP_PORT).close
|
26
25
|
end
|
27
26
|
rescue Timeout::Error
|
28
27
|
response.port_opened = false
|
data/lib/truemail/version.rb
CHANGED
data/truemail.gemspec
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
lib = File.expand_path('../lib', __FILE__)
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
5
|
require 'truemail/version'
|
@@ -21,14 +23,14 @@ Gem::Specification.new do |spec|
|
|
21
23
|
spec.require_paths = ['lib']
|
22
24
|
|
23
25
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
24
|
-
spec.add_development_dependency '
|
25
|
-
spec.add_development_dependency '
|
26
|
+
spec.add_development_dependency 'bundler-audit'
|
27
|
+
spec.add_development_dependency 'ffaker'
|
26
28
|
spec.add_development_dependency 'overcommit'
|
29
|
+
spec.add_development_dependency 'pry-byebug'
|
30
|
+
spec.add_development_dependency 'rake'
|
27
31
|
spec.add_development_dependency 'reek'
|
32
|
+
spec.add_development_dependency 'rspec'
|
28
33
|
spec.add_development_dependency 'rubocop'
|
29
34
|
spec.add_development_dependency 'rubocop-rspec'
|
30
|
-
spec.add_development_dependency 'ffaker'
|
31
35
|
spec.add_development_dependency 'simplecov'
|
32
|
-
spec.add_development_dependency 'bundler-audit'
|
33
|
-
spec.add_development_dependency 'pry-byebug'
|
34
36
|
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: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladislav Trotsenko
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.16'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: bundler-audit
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: ffaker
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: pry-byebug
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: reek
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rspec
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: rubocop
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: rubocop-rspec
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: simplecov
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
@@ -173,6 +173,7 @@ extensions: []
|
|
173
173
|
extra_rdoc_files: []
|
174
174
|
files:
|
175
175
|
- ".circleci/config.yml"
|
176
|
+
- ".codeclimate.yml"
|
176
177
|
- ".gitignore"
|
177
178
|
- ".overcommit.yml"
|
178
179
|
- ".reek.yml"
|