truemail 0.1.1.3 → 0.1.2
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 +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
|
-
[](https://codeclimate.com/github/rubygarage/truemail/maintainability) [](https://codeclimate.com/github/rubygarage/truemail/test_coverage) [](https://badge.fury.io/rb/truemail) [](https://codeclimate.com/github/rubygarage/truemail/maintainability) [](https://codeclimate.com/github/rubygarage/truemail/test_coverage) [](https://badge.fury.io/rb/truemail) [](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"
|