zerobounceindia-sdk 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -4
- data/README.md +44 -0
- data/{README_es.md → documentation.md} +20 -24
- data/documentation_es.md +405 -0
- data/lib/zerobounce/version.rb +1 -1
- data/lib/zerobounce.rb +64 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a8278f475b837d6886e33154a2ff247f73fece2bc0fc4b248aed572880b10e3
|
4
|
+
data.tar.gz: ffc573808eb12f36b04024c5a59c0e561eb037cf4c791c867d265908b1947ba6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 105242c5a61848a142aaf5f81573dc1e2e26f8f8d15c671cec7670fa0f78d78eb3cc166752ae159b0df5084ba6415e5b03c0afa0ad0aee5943178180830a0171
|
7
|
+
data.tar.gz: 1d8bc63a912082434db30dbcedbdf2955c468d24c9e81d0934e41110c77fd77a7ebe6cc7e435893b3d71e3015844ddf712da8710b1052c74646162ca5844aa1c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
zerobounce (
|
4
|
+
zerobounce-sdk (1.1.0)
|
5
5
|
rest-client (~> 2.1)
|
6
6
|
|
7
7
|
GEM
|
@@ -23,9 +23,9 @@ GEM
|
|
23
23
|
domain_name (~> 0.5)
|
24
24
|
json (2.6.3)
|
25
25
|
method_source (1.0.0)
|
26
|
-
mime-types (3.
|
26
|
+
mime-types (3.5.1)
|
27
27
|
mime-types-data (~> 3.2015)
|
28
|
-
mime-types-data (3.2023.
|
28
|
+
mime-types-data (3.2023.0808)
|
29
29
|
netrc (0.11.0)
|
30
30
|
parallel (1.22.1)
|
31
31
|
parser (3.2.2.0)
|
@@ -115,7 +115,7 @@ DEPENDENCIES
|
|
115
115
|
vcr (~> 6.1.0)
|
116
116
|
webmock (~> 3.18)
|
117
117
|
yard (~> 0.9.26)
|
118
|
-
zerobounce!
|
118
|
+
zerobounce-sdk!
|
119
119
|
|
120
120
|
BUNDLED WITH
|
121
121
|
2.4.6
|
data/README.md
CHANGED
@@ -361,6 +361,50 @@ Zerobounce.validate_file_delete(file_id)
|
|
361
361
|
```
|
362
362
|
|
363
363
|
|
364
|
+
### Email Finder
|
365
|
+
|
366
|
+
Guess Format
|
367
|
+
```ruby
|
368
|
+
Zerobounce.guessformat("zerobounce.net")
|
369
|
+
=>
|
370
|
+
{"email"=>"",
|
371
|
+
"domain"=>"zerobounce.net",
|
372
|
+
"format"=>"first.last",
|
373
|
+
"status"=>"",
|
374
|
+
"sub_status"=>"",
|
375
|
+
"confidence"=>"high",
|
376
|
+
"did_you_mean"=>"",
|
377
|
+
"failure_reason"=>"",
|
378
|
+
"other_domain_formats"=>
|
379
|
+
[{"format"=>"first", "confidence"=>"high"},
|
380
|
+
{"format"=>"last.first", "confidence"=>"high"},
|
381
|
+
{"format"=>"lfirst", "confidence"=>"high"},
|
382
|
+
{"format"=>"lastfirst", "confidence"=>"high"},
|
383
|
+
{"format"=>"firstl", "confidence"=>"high"},
|
384
|
+
{"format"=>"last", "confidence"=>"medium"},
|
385
|
+
{"format"=>"first.middle.last", "confidence"=>"medium"},
|
386
|
+
{"format"=>"first-last", "confidence"=>"medium"},
|
387
|
+
{"format"=>"l.first", "confidence"=>"medium"},
|
388
|
+
{"format"=>"f.last", "confidence"=>"medium"},
|
389
|
+
{"format"=>"f-last", "confidence"=>"medium"},
|
390
|
+
{"format"=>"first.l", "confidence"=>"medium"},
|
391
|
+
{"format"=>"first-l", "confidence"=>"medium"},
|
392
|
+
{"format"=>"firstlast", "confidence"=>"medium"},
|
393
|
+
{"format"=>"first_l", "confidence"=>"medium"},
|
394
|
+
{"format"=>"f_last", "confidence"=>"medium"},
|
395
|
+
{"format"=>"last.f", "confidence"=>"medium"},
|
396
|
+
{"format"=>"last-f", "confidence"=>"medium"},
|
397
|
+
{"format"=>"last-first", "confidence"=>"medium"},
|
398
|
+
{"format"=>"first_last", "confidence"=>"medium"},
|
399
|
+
{"format"=>"last_f", "confidence"=>"medium"},
|
400
|
+
{"format"=>"last_first", "confidence"=>"medium"},
|
401
|
+
{"format"=>"flast", "confidence"=>"medium"},
|
402
|
+
{"format"=>"lastf", "confidence"=>"medium"},
|
403
|
+
{"format"=>"l-first", "confidence"=>"low"},
|
404
|
+
{"format"=>"l_first", "confidence"=>"low"}]}
|
405
|
+
# Zerobounce.guessformat("zerobounce.net", first_name: "John", middle_name: 'Deere', last_name: "Doe")
|
406
|
+
```
|
407
|
+
|
364
408
|
## Development
|
365
409
|
|
366
410
|
After checking out the repo run tests
|
@@ -1,8 +1,4 @@
|
|
1
|
-
|
2
|
-
# Zerobounce India
|
3
|
-
Ruby client for Zerobounce.net API. Developed based on [this version](https://github.com/afrase/zerobounce) by Aaron Frase.
|
4
|
-
|
5
|
-
## Usage
|
1
|
+
#### Usage
|
6
2
|
Add this line to your application's Gemfile:
|
7
3
|
```ruby
|
8
4
|
gem 'zerobounceindia-sdk'
|
@@ -39,7 +35,7 @@ Zerobounce.config.apikey = '<zerobounce-api-key>'
|
|
39
35
|
Credits
|
40
36
|
```ruby
|
41
37
|
Zerobounce.credits
|
42
|
-
=> 79
|
38
|
+
=> 79 ### returns -1 for invalid key
|
43
39
|
```
|
44
40
|
|
45
41
|
Activity
|
@@ -88,12 +84,12 @@ Zerobounce.api_usage(Date.today, Date.today)
|
|
88
84
|
"end_date"=>"4/28/2023"}
|
89
85
|
```
|
90
86
|
|
91
|
-
|
87
|
+
##### Email Validation
|
92
88
|
|
93
89
|
Validate single eMail
|
94
90
|
```ruby
|
95
91
|
Zerobounce.validate('valid@example.com')
|
96
|
-
|
92
|
+
### Zerobounce.validate('valid@example.com', '192.168.0.1') # optional IP address
|
97
93
|
=>
|
98
94
|
{"address"=>"valid@example.com",
|
99
95
|
"status"=>"valid",
|
@@ -127,9 +123,9 @@ emails
|
|
127
123
|
"donotmail@example.com",
|
128
124
|
"spamtrap@example.com"]
|
129
125
|
|
130
|
-
|
126
|
+
### ip_addresses
|
131
127
|
=> ["192.168.0.1", "192.168.0.1", "192.168.0.1", "192.168.0.1", "192.168.0.1", "192.168.0.1"]
|
132
|
-
|
128
|
+
### Zerobounce.validate_batch(emails, ip_addresses) # optional ip_addresses parameter
|
133
129
|
|
134
130
|
Zerobounce.validate_batch(emails)
|
135
131
|
=>
|
@@ -249,11 +245,11 @@ Zerobounce.validate_batch(emails)
|
|
249
245
|
"processed_at"=>"2023-04-28 15:21:44.340"}]
|
250
246
|
```
|
251
247
|
|
252
|
-
|
248
|
+
###### Batch File Validation
|
253
249
|
|
254
250
|
Send file
|
255
251
|
```ruby
|
256
|
-
|
252
|
+
### sample file can be found in the files folder of this repository
|
257
253
|
validate_file_path = File.join(Dir.pwd, 'files', 'validation.csv')
|
258
254
|
=> "/home/zb/wrappers/ruby-test/files/validation.csv"
|
259
255
|
Zerobounce.validate_file_send(validate_file_path)
|
@@ -262,15 +258,15 @@ Send file
|
|
262
258
|
"message"=>"File Accepted",
|
263
259
|
"file_name"=>"validation.csv",
|
264
260
|
"file_id"=>"75d854a6-565c-49f9-b4c8-b3344480ec4c"}
|
265
|
-
|
266
|
-
|
261
|
+
### file_id will be required for next steps
|
262
|
+
### optional named parameters:
|
267
263
|
email_address_column: 1,
|
268
264
|
first_name_column: 2,
|
269
265
|
last_name_column: 3,
|
270
266
|
gender_column: 4,
|
271
267
|
has_header_row: true,
|
272
|
-
return_url: nil
|
273
|
-
|
268
|
+
return_url: nil ### results callback url
|
269
|
+
### Zerobounce.validate_file_send(validate_file_path, email_address_column: 1, gender_column: 4)
|
274
270
|
```
|
275
271
|
|
276
272
|
Check file
|
@@ -309,7 +305,7 @@ Zerobounce.validate_file_delete(file_id)
|
|
309
305
|
"file_id"=>"75d854a6-565c-49f9-b4c8-b3344480ec4c"}
|
310
306
|
```
|
311
307
|
|
312
|
-
|
308
|
+
##### AI Scoring
|
313
309
|
|
314
310
|
Send file
|
315
311
|
```ruby
|
@@ -321,12 +317,12 @@ Zerobounce.scoring_file_send(scoring_file_path)
|
|
321
317
|
"message"=>"File Accepted",
|
322
318
|
"file_name"=>"scoring.csv",
|
323
319
|
"file_id"=>"89fb7262-b845-4fa1-aa25-e486347ec64e"}
|
324
|
-
|
325
|
-
|
320
|
+
### file_id will be required for the next steps
|
321
|
+
### optional named parameters
|
326
322
|
email_address_column: 1,
|
327
323
|
has_header_row: true,
|
328
|
-
return_url: nil
|
329
|
-
|
324
|
+
return_url: nil ### results callback url
|
325
|
+
### Zerobounce.scoring_file_send(scoring_file_path, email_address_column: 1)
|
330
326
|
```
|
331
327
|
|
332
328
|
File check
|
@@ -361,11 +357,11 @@ Zerobounce.validate_file_delete(file_id)
|
|
361
357
|
```
|
362
358
|
|
363
359
|
|
364
|
-
|
360
|
+
#### Development
|
365
361
|
|
366
362
|
After checking out the repo run tests
|
367
363
|
```bash
|
368
|
-
rspec --init
|
364
|
+
rspec --init ### if needed
|
369
365
|
bundle exec rspec
|
370
366
|
```
|
371
367
|
|
@@ -379,7 +375,7 @@ Finished in 6.81 seconds (files took 0.40587 seconds to load)
|
|
379
375
|
53 examples, 0 failures
|
380
376
|
```
|
381
377
|
|
382
|
-
|
378
|
+
##### Test parameters
|
383
379
|
The tests use the following environment parameters:
|
384
380
|
TEST {unit|live} influences whether mocked unit tests are run or the live server is used (credits may be used if you choose to do this)
|
385
381
|
ZEROBOUNCE_API_KEY {<zerobounce-api-key-value>} this key is used to make requests to the live server; it is also used in mock tests as a valid key sample (any value will work for mock tests)
|
data/documentation_es.md
ADDED
@@ -0,0 +1,405 @@
|
|
1
|
+
#### Uso
|
2
|
+
Agrega esta línea a tu Gemfile de la aplicación:
|
3
|
+
```ruby
|
4
|
+
gem 'zerobounce-sdk'
|
5
|
+
```
|
6
|
+
|
7
|
+
Y luego ejecuta:
|
8
|
+
```bash
|
9
|
+
$ bundle
|
10
|
+
```
|
11
|
+
|
12
|
+
O instálalo directamente con:
|
13
|
+
```bash
|
14
|
+
$ gem install zerobounce-sdk
|
15
|
+
```
|
16
|
+
|
17
|
+
Importa:
|
18
|
+
```ruby
|
19
|
+
require 'zerobounce'
|
20
|
+
```
|
21
|
+
|
22
|
+
Configura una clave de API válida de ZeroBounce:
|
23
|
+
```ruby
|
24
|
+
Zerobounce.configure do |config|
|
25
|
+
config.apikey = '<clave-de-api-de-zerobounce>'
|
26
|
+
...
|
27
|
+
end
|
28
|
+
```
|
29
|
+
o
|
30
|
+
```ruby
|
31
|
+
Zerobounce.config.apikey = '<clave-de-api-de-zerobounce>'
|
32
|
+
...
|
33
|
+
```
|
34
|
+
|
35
|
+
Créditos
|
36
|
+
```ruby
|
37
|
+
Zerobounce.credits
|
38
|
+
=> 79 ### devuelve -1 si la clave es inválida
|
39
|
+
```
|
40
|
+
|
41
|
+
Actividad
|
42
|
+
```ruby
|
43
|
+
Zerobounce.activity('ss@gmail.com')
|
44
|
+
=> {"found"=>true, "active_in_days"=>"180"}
|
45
|
+
```
|
46
|
+
|
47
|
+
Estadísticas de uso
|
48
|
+
```ruby
|
49
|
+
Zerobounce.api_usage(Date.today, Date.today)
|
50
|
+
=>
|
51
|
+
{"total"=>0,
|
52
|
+
"status_valid"=>0,
|
53
|
+
"status_invalid"=>0,
|
54
|
+
"status_catch_all"=>0,
|
55
|
+
"status_do_not_mail"=>0,
|
56
|
+
"status_spamtrap"=>0,
|
57
|
+
"status_unknown"=>0,
|
58
|
+
"sub_status_toxic"=>0,
|
59
|
+
"sub_status_disposable"=>0,
|
60
|
+
"sub_status_role_based"=>0,
|
61
|
+
"sub_status_possible_trap"=>0,
|
62
|
+
"sub_status_global_suppression"=>0,
|
63
|
+
"sub_status_timeout_exceeded"=>0,
|
64
|
+
"sub_status_mail_server_temporary_error"=>0,
|
65
|
+
"sub_status_mail_server_did_not_respond"=>0,
|
66
|
+
"sub_status_greylisted"=>0,
|
67
|
+
"sub_status_antispam_system"=>0,
|
68
|
+
"sub_status_does_not_accept_mail"=>0,
|
69
|
+
"sub_status_exception_occurred"=>0,
|
70
|
+
"sub_status_failed_syntax_check"=>0,
|
71
|
+
"sub_status_mailbox_not_found"=>0,
|
72
|
+
"sub_status_unroutable_ip_address"=>0,
|
73
|
+
"sub_status_possible_typo"=>0,
|
74
|
+
"sub_status_no_dns_entries"=>0,
|
75
|
+
"sub_status_role_based_catch_all"=>0,
|
76
|
+
"sub_status_mailbox_quota_exceeded"=>0,
|
77
|
+
"sub_status_forcible_disconnect"=>0,
|
78
|
+
"sub_status_failed_smtp_connection"=>0,
|
79
|
+
"sub_status_mx_forward"=>0,
|
80
|
+
"sub_status_alternate"=>0,
|
81
|
+
"sub_status_blocked"=>0,
|
82
|
+
"sub_status_allowed"=>0,
|
83
|
+
"start_date"=>"4/28/2023",
|
84
|
+
"end_date"=>"4/28/2023"}
|
85
|
+
```
|
86
|
+
|
87
|
+
##### Validación de correo electrónico
|
88
|
+
|
89
|
+
Validar un solo correo electrónico
|
90
|
+
```ruby
|
91
|
+
Zerobounce.validate('valid@example.com')
|
92
|
+
### Zerobounce.validate('valid@example.com', '192.168.0.1') # dirección IP opcional
|
93
|
+
=>
|
94
|
+
{"address"=>"valid@example.com",
|
95
|
+
"status"=>"valid",
|
96
|
+
"sub_status"=>"",
|
97
|
+
"free_email"=>false,
|
98
|
+
"did_you_mean"=>nil,
|
99
|
+
"account"=>nil,
|
100
|
+
"domain"=>nil,
|
101
|
+
"domain_age_days"=>"9692",
|
102
|
+
"smtp_provider"=>"example",
|
103
|
+
"mx_found"=>"true",
|
104
|
+
"mx_record"=>"mx.example.com",
|
105
|
+
"firstname"=>"zero",
|
106
|
+
"lastname"=>"bounce",
|
107
|
+
"gender"=>"male",
|
108
|
+
"country"=>nil,
|
109
|
+
"region"=>nil,
|
110
|
+
"city"=>nil,
|
111
|
+
"zipcode"=>nil,
|
112
|
+
"processed_at"=>"2023-04-28 15:18:45.631"}
|
113
|
+
```
|
114
|
+
|
115
|
+
Validar
|
116
|
+
|
117
|
+
en lote
|
118
|
+
```ruby
|
119
|
+
emails
|
120
|
+
=>
|
121
|
+
["disposable@example.com",
|
122
|
+
"invalid@example.com",
|
123
|
+
"valid@example.com",
|
124
|
+
"toxic@example.com",
|
125
|
+
"donotmail@example.com",
|
126
|
+
"spamtrap@example.com"]
|
127
|
+
|
128
|
+
### ip_addresses
|
129
|
+
=> ["192.168.0.1", "192.168.0.1", "192.168.0.1", "192.168.0.1", "192.168.0.1", "192.168.0.1"]
|
130
|
+
### Zerobounce.validate_batch(emails, ip_addresses) # parámetro ip_addresses opcional
|
131
|
+
|
132
|
+
Zerobounce.validate_batch(emails)
|
133
|
+
=>
|
134
|
+
[{"address"=>"disposable@example.com",
|
135
|
+
"status"=>"do_not_mail",
|
136
|
+
"sub_status"=>"disposable",
|
137
|
+
"free_email"=>false,
|
138
|
+
"did_you_mean"=>nil,
|
139
|
+
"account"=>nil,
|
140
|
+
"domain"=>nil,
|
141
|
+
"domain_age_days"=>"9692",
|
142
|
+
"smtp_provider"=>"example",
|
143
|
+
"mx_found"=>"true",
|
144
|
+
"mx_record"=>"mx.example.com",
|
145
|
+
"firstname"=>"zero",
|
146
|
+
"lastname"=>"bounce",
|
147
|
+
"gender"=>"male",
|
148
|
+
"country"=>nil,
|
149
|
+
"region"=>nil,
|
150
|
+
"city"=>nil,
|
151
|
+
"zipcode"=>nil,
|
152
|
+
"processed_at"=>"2023-04-28 15:21:44.340"},
|
153
|
+
{"address"=>"invalid@example.com",
|
154
|
+
"status"=>"invalid",
|
155
|
+
"sub_status"=>"mailbox_not_found",
|
156
|
+
"free_email"=>false,
|
157
|
+
"did_you_mean"=>nil,
|
158
|
+
"account"=>nil,
|
159
|
+
"domain"=>nil,
|
160
|
+
"domain_age_days"=>"9692",
|
161
|
+
"smtp_provider"=>"example",
|
162
|
+
"mx_found"=>"true",
|
163
|
+
"mx_record"=>"mx.example.com",
|
164
|
+
"firstname"=>"zero",
|
165
|
+
"lastname"=>"bounce",
|
166
|
+
"gender"=>"male",
|
167
|
+
"country"=>nil,
|
168
|
+
"region"=>nil,
|
169
|
+
"city"=>nil,
|
170
|
+
"zipcode"=>nil,
|
171
|
+
"processed_at"=>"2023-04-28 15:21:44.340"},
|
172
|
+
{"address"=>"valid@example.com",
|
173
|
+
"status"=>"valid",
|
174
|
+
"sub_status"=>"",
|
175
|
+
"free_email"=>false,
|
176
|
+
"did_you_mean"=>nil,
|
177
|
+
"account"=>nil,
|
178
|
+
"domain"=>nil,
|
179
|
+
"domain_age_days"=>"9692",
|
180
|
+
"smtp_provider"=>"example",
|
181
|
+
"mx_found"=>"true",
|
182
|
+
"mx_record"=>"mx.example.com",
|
183
|
+
"firstname"=>"zero",
|
184
|
+
"lastname"=>"bounce",
|
185
|
+
"gender"=>"male",
|
186
|
+
"country"=>nil,
|
187
|
+
"region"=>nil,
|
188
|
+
"city"=>nil,
|
189
|
+
"zipcode"=>nil,
|
190
|
+
"processed_at"=>"2023-04-28 15:21:44.340"},
|
191
|
+
{"address"=>"toxic@example.com",
|
192
|
+
"status"=>"do_not_mail",
|
193
|
+
"sub_status"=>"toxic",
|
194
|
+
"free_email"=>false,
|
195
|
+
"did_you_mean"=>nil,
|
196
|
+
"account"=>nil,
|
197
|
+
"domain"=>nil,
|
198
|
+
"domain_age_days"=>"9692",
|
199
|
+
"smtp_provider"=>"example",
|
200
|
+
"mx_found"=>"true",
|
201
|
+
"mx_record"=>"mx.example.com",
|
202
|
+
"firstname"=>"zero",
|
203
|
+
"lastname"=>"bounce",
|
204
|
+
"gender"=>"male",
|
205
|
+
"country"=>nil,
|
206
|
+
"region"=>nil,
|
207
|
+
"city"=>nil,
|
208
|
+
"zipcode"=>nil,
|
209
|
+
"processed_at"=>"2023-04-28 15:21:44.340"},
|
210
|
+
{"address"=>"donotmail@example.com",
|
211
|
+
"status"=>"do_not_mail",
|
212
|
+
"sub_status"=>"role_based",
|
213
|
+
"free_email"=>false,
|
214
|
+
"did_you_mean"=>nil,
|
215
|
+
"account"=>nil,
|
216
|
+
"domain"=>nil,
|
217
|
+
"domain
|
218
|
+
|
219
|
+
_age_days"=>"9692",
|
220
|
+
"smtp_provider"=>"example",
|
221
|
+
"mx_found"=>"true",
|
222
|
+
"mx_record"=>"mx.example.com",
|
223
|
+
"firstname"=>"zero",
|
224
|
+
"lastname"=>"bounce",
|
225
|
+
"gender"=>"male",
|
226
|
+
"country"=>nil,
|
227
|
+
"region"=>nil,
|
228
|
+
"city"=>nil,
|
229
|
+
"zipcode"=>nil,
|
230
|
+
"processed_at"=>"2023-04-28 15:21:44.340"},
|
231
|
+
{"address"=>"spamtrap@example.com",
|
232
|
+
"status"=>"spamtrap",
|
233
|
+
"sub_status"=>"",
|
234
|
+
"free_email"=>false,
|
235
|
+
"did_you_mean"=>nil,
|
236
|
+
"account"=>nil,
|
237
|
+
"domain"=>nil,
|
238
|
+
"domain_age_days"=>"9692",
|
239
|
+
"smtp_provider"=>"example",
|
240
|
+
"mx_found"=>"true",
|
241
|
+
"mx_record"=>"mx.example.com",
|
242
|
+
"firstname"=>"zero",
|
243
|
+
"lastname"=>"bounce",
|
244
|
+
"gender"=>"male",
|
245
|
+
"country"=>nil,
|
246
|
+
"region"=>nil,
|
247
|
+
"city"=>nil,
|
248
|
+
"zipcode"=>nil,
|
249
|
+
"processed_at"=>"2023-04-28 15:21:44.340"}]
|
250
|
+
```
|
251
|
+
|
252
|
+
###### Validación de archivo en lote
|
253
|
+
|
254
|
+
Enviar archivo
|
255
|
+
```ruby
|
256
|
+
### puedes encontrar un archivo de muestra en la carpeta files de este repositorio
|
257
|
+
validate_file_path = File.join(Dir.pwd, 'files', 'validation.csv')
|
258
|
+
=> "/home/zb/wrappers/ruby-test/files/validation.csv"
|
259
|
+
Zerobounce.validate_file_send(validate_file_path)
|
260
|
+
=>
|
261
|
+
{"success"=>true,
|
262
|
+
"message"=>"File Accepted",
|
263
|
+
"file_name"=>"validation.csv",
|
264
|
+
"file_id"=>"75d854a6-565c-49f9-b4c8-b3344480ec4c"}
|
265
|
+
### se requerirá el file_id para los próximos pasos
|
266
|
+
### parámetros opcionales:
|
267
|
+
email_address_column: 1,
|
268
|
+
first_name_column: 2,
|
269
|
+
last_name_column: 3,
|
270
|
+
gender_column: 4,
|
271
|
+
has_header_row: true,
|
272
|
+
return_url: nil ### URL de devolución de resultados
|
273
|
+
### Zerobounce.validate_file_send(validate_file_path, email_address_column: 1, gender_column: 4)
|
274
|
+
```
|
275
|
+
|
276
|
+
Verificar archivo
|
277
|
+
```ruby
|
278
|
+
file_id = "75d854a6-565c-49f9-b4c8-b3344480ec4c"
|
279
|
+
=> "75d854a6-565c-49f9-b4c8-b3344480ec4c"
|
280
|
+
Zerobounce.validate_file_check(file_id)
|
281
|
+
=>
|
282
|
+
{"success"=>true,
|
283
|
+
"file_id"=>"75d854a6-565c-49f9-b4c8-b3344480ec4c",
|
284
|
+
"file_name"=>"validation.csv",
|
285
|
+
"upload_date"=>"2023-04-28T15:25:41Z",
|
286
|
+
"file_status"=>"Greylisted",
|
287
|
+
"complete_percentage"=>"0%",
|
288
|
+
"error_reason"=>nil,
|
289
|
+
"return_url"=>nil}
|
290
|
+
```
|
291
|
+
|
292
|
+
Obtener archivo
|
293
|
+
```ruby
|
294
|
+
file_id = "75d854a6-565c-49f9-b4c8-b3344480ec4c"
|
295
|
+
=> "75d854a6-565c-49f9-b4c8-b3344480ec4c"
|
296
|
+
Zerobounce.validate_file_get(file_id)
|
297
|
+
=> "\"email\",\"first\",\"last\",\"gender\",\"ip\",\"ZB Status\",\"ZB Sub Status\",\"ZB Account\",\"ZB Domain\",\"ZB First Name\",\"ZB Last Name\",\"ZB Gender\",\"ZB Free Email\",\"ZB MX Found\",\"ZB MX Record\",\"ZB SMTP Provider\",\"ZB Did You Mean\"\n\"disposable@example.com\",\"
|
298
|
+
|
299
|
+
First\",\"Last\",\"male\",\"127.0.0.1\",\"do_not_mail\",\"disposable\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"invalid@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"invalid\",\"mailbox_not_found\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"valid@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"valid\",\"\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"toxic@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"do_not_mail\",\"toxic\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"donotmail@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"do_not_mail\",\"role_based\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"spamtrap@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"spamtrap\",\"\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"abuse@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"abuse\",\"\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"unknown@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"unknown\",\"mail_server_temporary_error\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"catch_all@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"catch-all\",\"\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"antispam_system@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"unknown\",\"antispam_system\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"does_not_accept_mail@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"invalid\",\"does_not_accept_mail\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"exception_occurred@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"unknown\",\"exception_occurred\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"failed_smtp_connection@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"unknown\",\"failed_smtp_connection\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"failed_syntax_check@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"invalid\",\"failed_syntax_check\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"forcible_disconnect@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"unknown\",\"forcible_disconnect\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"global_suppression@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"do_not_mail\",\"global_suppression\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"greylisted@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"unknown\",\"greylisted\",\"\",\"\",\"zero\",\"
|
300
|
+
|
301
|
+
bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"leading_period_removed@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"valid\",\"leading_period_removed\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"mail_server_did_not_respond@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"unknown\",\"mail_server_did_not_respond\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"mail_server_temporary_error@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"unknown\",\"mail_server_temporary_error\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"mailbox_quota_exceeded@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"invalid\",\"mailbox_quota_exceeded\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"mailbox_not_found@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"invalid\",\"mailbox_not_found\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"no_dns_entries@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"invalid\",\"no_dns_entries\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"possible_trap@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"do_not_mail\",\"possible_trap\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"possible_typo@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"invalid\",\"possible_typo\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"role_based@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"do_not_mail\",\"role_based\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"timeout_exceeded@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"unknown\",\"timeout_exceeded\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"unroutable_ip_address@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"invalid\",\"unroutable_ip_address\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"free_email@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"valid\",\"\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"True\",\"true\",\"mx.example.com\",\"example\",\"\"\n\"role_based_catch_all@example.com\",\"First\",\"Last\",\"male\",\"127.0.0.1\",\"do_not_mail\",\"role_based_catch_all\",\"\",\"\",\"zero\",\"bounce\",\"male\",\"False\",\"true\",\"mx.example.com\",\"example\",\"\"\n"
|
302
|
+
```
|
303
|
+
|
304
|
+
Eliminar archivo
|
305
|
+
```ruby
|
306
|
+
file_id = "75d854a6-565c-49f9-b4c8-b3344480ec4c"
|
307
|
+
=> "75d854a6-565c-49f9-b4c8-b3344480ec4c"
|
308
|
+
Zerobounce.validate_file_delete(file_id)
|
309
|
+
=>
|
310
|
+
{"success"=>true,
|
311
|
+
"message"=>"File Deleted",
|
312
|
+
"file_name"=>"validation.csv",
|
313
|
+
"file_id"=>"75d854a6-565c-49f9-b4c8-b3344480ec4
|
314
|
+
|
315
|
+
c"}
|
316
|
+
```
|
317
|
+
|
318
|
+
##### Puntuación de IA
|
319
|
+
|
320
|
+
Enviar archivo
|
321
|
+
```ruby
|
322
|
+
scoring_file_path = File.join(Dir.pwd, 'files', 'scoring.csv')
|
323
|
+
=> "/home/odin/zb/wrappers/ruby-test/files/scoring.csv"
|
324
|
+
Zerobounce.scoring_file_send(scoring_file_path)
|
325
|
+
=>
|
326
|
+
{"success"=>true,
|
327
|
+
"message"=>"File Accepted",
|
328
|
+
"file_name"=>"scoring.csv",
|
329
|
+
"file_id"=>"89fb7262-b845-4fa1-aa25-e486347ec64e"}
|
330
|
+
### se requerirá el file_id para los próximos pasos
|
331
|
+
### parámetros opcionales
|
332
|
+
email_address_column: 1,
|
333
|
+
has_header_row: true,
|
334
|
+
return_url: nil ### URL de devolución de resultados
|
335
|
+
### Zerobounce.scoring_file_send(scoring_file_path, email_address_column: 1)
|
336
|
+
```
|
337
|
+
|
338
|
+
Verificar archivo
|
339
|
+
```ruby
|
340
|
+
file_id = "89fb7262-b845-4fa1-aa25-e486347ec64e"
|
341
|
+
=> "89fb7262-b845-4fa1-aa25-e486347ec64e"
|
342
|
+
Zerobounce.scoring_file_check(file_id)
|
343
|
+
=>
|
344
|
+
{"success"=>true,
|
345
|
+
"file_id"=>"89fb7262-b845-4fa1-aa25-e486347ec64e",
|
346
|
+
"file_name"=>"scoring.csv",
|
347
|
+
"upload_date"=>"2023-04-28T16:57:18Z",
|
348
|
+
"file_status"=>"Complete",
|
349
|
+
"complete_percentage"=>"100% Complete.",
|
350
|
+
"return_url"=>nil}
|
351
|
+
```
|
352
|
+
|
353
|
+
Obtener archivo
|
354
|
+
```ruby
|
355
|
+
file_id = "89fb7262-b845-4fa1-aa25-e486347ec64e"
|
356
|
+
=> "89fb7262-b845-4fa1-aa25-e486347ec64e"
|
357
|
+
Zerobounce.scoring_file_get(file_id)
|
358
|
+
=> "\"email\",\"ZeroBounceQualityScore\"\r\n\"disposable@example.com\",\"0\"\r\n\"invalid@example.com\",\"10\"\r\n\"valid@example.com\",\"10\"\r\n\"toxic@example.com\",\"2\"\r\n\"donotmail@example.com\",\"0\"\r\n\"spamtrap@example.com\",\"0\"\r\n\"abuse@example.com\",\"10\"\r\n\"unknown@example.com\",\"10\"\r\n\"catch_all@example.com\",\"10\"\r\n\"antispam_system@example.com\",\"0\"\r\n\"does_not_accept_mail@example.com\",\"0\"\r\n\"exception_occurred@example.com\",\"0\"\r\n\"failed_smtp_connection@example.com\",\"0\"\r\n\"failed_syntax_check@example.com\",\"0\"\r\n\"forcible_disconnect@example.com\",\"0\"\r\n\"global_suppression@example.com\",\"0\"\r\n\"greylisted@example.com\",\"0\"\r\n\"leading_period_removed@example.com\",\"0\"\r\n\"mail_server_did_not_respond@example.com\",\"0\"\r\n\"mail_server_temporary_error@example.com\",\"0\"\r\n\"mailbox_quota_exceeded@example.com\",\"0\"\r\n\"mailbox_not_found@example.com\",\"0\"\r\n\"no_dns_entries@example.com\",\"0\"\r\n\"possible_trap@example.com\",\"0\"\r\n\"possible_typo@example.com\",\"0\"\r\n\"role_based@example.com\",\"0\"\r\n\"timeout_exceeded@example.com\",\"0\"\r\n\"unroutable_ip_address@example.com\",\"0\"\r\n\"free_email@example.com\",\"0\"\r\n\"role_based_catch_all@example.com\",\"0\""
|
359
|
+
```
|
360
|
+
|
361
|
+
Eliminar archivo
|
362
|
+
```ruby
|
363
|
+
file_id = "89fb7262-b845-4fa1-aa25-e486347ec64e"
|
364
|
+
|
365
|
+
|
366
|
+
=> "89fb7262-b845-4fa1-aa25-e486347ec64e"
|
367
|
+
Zerobounce.validate_file_delete(file_id)
|
368
|
+
=> {"success"=>false, "message"=>"File cannot be found."}
|
369
|
+
```
|
370
|
+
|
371
|
+
|
372
|
+
#### Desarrollo
|
373
|
+
|
374
|
+
Después de revisar el repositorio, ejecuta las pruebas:
|
375
|
+
```bash
|
376
|
+
rspec --init ### si es necesario
|
377
|
+
bundle exec rspec
|
378
|
+
```
|
379
|
+
|
380
|
+
Deberías ver una salida como esta:
|
381
|
+
```bash
|
382
|
+
Run options: include {:focus=>true}
|
383
|
+
running live tests
|
384
|
+
.....................................................
|
385
|
+
|
386
|
+
Finished in 6.81 seconds (files took 0.40587 seconds to load)
|
387
|
+
53 examples, 0 failures
|
388
|
+
```
|
389
|
+
|
390
|
+
##### Parámetros de prueba
|
391
|
+
Las pruebas utilizan los siguientes parámetros de entorno:
|
392
|
+
TEST {unit|live} influye en si se ejecutan las pruebas simuladas de unidad o se utiliza el servidor en vivo (se pueden utilizar créditos si eliges hacer esto)
|
393
|
+
ZEROBOUNCE_API_KEY {<zerobounce-api-key-value>} esta clave se utiliza para realizar solicitudes al servidor en vivo; también se utiliza en las pruebas simuladas como un ejemplo de clave válida (cualquier valor funcionará para las pruebas simuladas)
|
394
|
+
INCORRECT_API_KEY {cualquier cadena sin espacios en blanco que no sea una clave válida} se utiliza para pruebas en las que las solicitudes deben fallar debido al valor de la clave de la API.
|
395
|
+
|
396
|
+
Para configurarlos:
|
397
|
+
```bash
|
398
|
+
export ZEROBOUNCE_API_KEY=99e7ef20ceea4480a173b07b1be75371
|
399
|
+
export INCORRECT_API_KEY=thiskeyisinvalidorotherwiseincorrect
|
400
|
+
export TEST=unit
|
401
|
+
```
|
402
|
+
|
403
|
+
Se proporciona un archivo .env.sample.
|
404
|
+
|
405
|
+
Las pruebas simuladas se generaron utilizando webmock y vcr. Esto significa que se realizaron solicitudes reales y se grabaron en los archivos .yml bajo spec/cassettes con una clave API válida en ese momento utilizada con fines de prueba. Sin embargo, esta clave se ha invalidado en el ínterin, pero se proporciona en el archivo .env.sample para que las pruebas simuladas funcionen. Si no desea utilizar esta clave para simulaciones, puede reemplazarla con cualquier valor en los archivos .yml bajo spec/cassettes o eliminarlos todos y volver a ejecutar las pruebas para que vcr los grabe con una nueva clave.
|
data/lib/zerobounce/version.rb
CHANGED
data/lib/zerobounce.rb
CHANGED
@@ -375,10 +375,73 @@ module Zerobounce
|
|
375
375
|
# "file_id": "6d44a908-7283-42a9-aa5f-9e57b16f84bd"
|
376
376
|
# }
|
377
377
|
def scoring_file_delete(file_id)
|
378
|
-
# todo:
|
379
378
|
params = {file_id: file_id}
|
380
379
|
@@request.bulk_get('scoring/deletefile', params)
|
381
380
|
end
|
382
381
|
|
382
|
+
# Guess email formatDomain to guess format for
|
383
|
+
#
|
384
|
+
# @param [String] domain Domain to guess format for
|
385
|
+
#
|
386
|
+
# @option [String] first_name First name of target.
|
387
|
+
# @option [String] middle_name Middle name of target.
|
388
|
+
# @option [String] last_name Last name of target.
|
389
|
+
#
|
390
|
+
# @return [Hash]
|
391
|
+
# {
|
392
|
+
# "email"=>"",
|
393
|
+
# "domain"=>"zerobounce.net",
|
394
|
+
# "format"=>"first.last",
|
395
|
+
# "status"=>"",
|
396
|
+
# "sub_status"=>"",
|
397
|
+
# "confidence"=>"high",
|
398
|
+
# "did_you_mean"=>"",
|
399
|
+
# "failure_reason"=>"",
|
400
|
+
# "other_domain_formats"=> [
|
401
|
+
# {"format"=>"first", "confidence"=>"high"},
|
402
|
+
# {"format"=>"last.first", "confidence"=>"high"},
|
403
|
+
# {"format"=>"lfirst", "confidence"=>"high"},
|
404
|
+
# {"format"=>"lastfirst", "confidence"=>"high"},
|
405
|
+
# {"format"=>"firstl", "confidence"=>"high"},
|
406
|
+
# {"format"=>"last", "confidence"=>"medium"},
|
407
|
+
# {"format"=>"first.middle.last", "confidence"=>"medium"},
|
408
|
+
# {"format"=>"first-last", "confidence"=>"medium"},
|
409
|
+
# {"format"=>"l.first", "confidence"=>"medium"},
|
410
|
+
# {"format"=>"f.last", "confidence"=>"medium"},
|
411
|
+
# {"format"=>"f-last", "confidence"=>"medium"},
|
412
|
+
# {"format"=>"first.l", "confidence"=>"medium"},
|
413
|
+
# {"format"=>"first-l", "confidence"=>"medium"},
|
414
|
+
# {"format"=>"firstlast", "confidence"=>"medium"},
|
415
|
+
# {"format"=>"first_l", "confidence"=>"medium"},
|
416
|
+
# {"format"=>"f_last", "confidence"=>"medium"},
|
417
|
+
# {"format"=>"last.f", "confidence"=>"medium"},
|
418
|
+
# {"format"=>"last-f", "confidence"=>"medium"},
|
419
|
+
# {"format"=>"last-first", "confidence"=>"medium"},
|
420
|
+
# {"format"=>"first_last", "confidence"=>"medium"},
|
421
|
+
# {"format"=>"last_f", "confidence"=>"medium"},
|
422
|
+
# {"format"=>"last_first", "confidence"=>"medium"},
|
423
|
+
# {"format"=>"flast", "confidence"=>"medium"},
|
424
|
+
# {"format"=>"lastf", "confidence"=>"medium"},
|
425
|
+
# {"format"=>"l-first", "confidence"=>"low"},
|
426
|
+
# {"format"=>"l_first", "confidence"=>"low"}
|
427
|
+
# ]
|
428
|
+
# }
|
429
|
+
def guessformat(domain, first_name: '', middle_name: '', last_name: '')
|
430
|
+
params = {
|
431
|
+
domain: domain
|
432
|
+
}
|
433
|
+
unless first_name.empty?
|
434
|
+
params['first_name'] = first_name
|
435
|
+
end
|
436
|
+
unless middle_name.empty?
|
437
|
+
params['middle_name'] = middle_name
|
438
|
+
end
|
439
|
+
unless last_name.empty?
|
440
|
+
params['last_name'] = last_name
|
441
|
+
end
|
442
|
+
|
443
|
+
@@request.get('guessformat', params)
|
444
|
+
end
|
445
|
+
|
383
446
|
end
|
384
447
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zerobounceindia-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zero Bounce India
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -231,13 +231,14 @@ files:
|
|
231
231
|
- LICENSE
|
232
232
|
- LICENSE.txt
|
233
233
|
- README.md
|
234
|
-
- README_es.md
|
235
234
|
- Rakefile
|
236
235
|
- bin/bundle
|
237
236
|
- bin/console
|
238
237
|
- bin/setup
|
239
238
|
- data/zerobounce-ai-scoring.csv
|
240
239
|
- data/zerobounce-batch-validation.csv
|
240
|
+
- documentation.md
|
241
|
+
- documentation_es.md
|
241
242
|
- files/scoring.csv
|
242
243
|
- files/validation.csv
|
243
244
|
- files/zerobounce-ai-scoring.csv
|