zerobounceindia-sdk 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -1
- data/README.md +56 -7
- data/documentation.md +51 -7
- data/documentation_es.md +50 -6
- data/lib/zerobounce/base_request.rb +2 -2
- data/lib/zerobounce/configuration.rb +3 -1
- data/lib/zerobounce/mock_request.rb +5 -5
- data/lib/zerobounce/request.rb +11 -5
- data/lib/zerobounce/version.rb +1 -1
- data/lib/zerobounce.rb +40 -40
- data/zerobounce.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fa7b16ed7f3d6433b147c71b8653f912ed92233e0a8886296f6dfc3119fa269
|
4
|
+
data.tar.gz: 52696da7f11e651bc6ddc6ab51979997fdaf9d4a181030add5477cec2d91d454
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 34643b4ad277d00d32aced6f53e042d1801afc66a8ad7532e35203e6f653abc2551399e0b15d3843dae88925657e604c1493969b1eb4ed93711eef055ea7db32
|
7
|
+
data.tar.gz: 2add5c95922b48374dd211fa9167fc7c1f7cb48f416acb3ddbfc65e4a1141d26490ce976cdb54f6eccb8e6c16594095776b59c7d64170b6c2dab0234af5ad331
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
zerobounce-sdk (1.1.
|
4
|
+
zerobounce-sdk (1.1.1)
|
5
|
+
dotenv (~> 2.8.1)
|
5
6
|
rest-client (~> 2.1)
|
6
7
|
|
7
8
|
GEM
|
@@ -17,6 +18,7 @@ GEM
|
|
17
18
|
docile (1.4.0)
|
18
19
|
domain_name (0.5.20190701)
|
19
20
|
unf (>= 0.0.5, < 1.0.0)
|
21
|
+
dotenv (2.8.1)
|
20
22
|
hashdiff (1.0.1)
|
21
23
|
http-accept (1.7.0)
|
22
24
|
http-cookie (1.0.5)
|
data/README.md
CHANGED
@@ -30,7 +30,7 @@ Zerobounce.configure do |config|
|
|
30
30
|
...
|
31
31
|
end
|
32
32
|
```
|
33
|
-
or
|
33
|
+
or
|
34
34
|
```
|
35
35
|
Zerobounce.config.apikey = '<zerobounce-api-key>'
|
36
36
|
...
|
@@ -92,7 +92,7 @@ Zerobounce.api_usage(Date.today, Date.today)
|
|
92
92
|
|
93
93
|
Validate single eMail
|
94
94
|
```ruby
|
95
|
-
Zerobounce.validate('valid@example.com')
|
95
|
+
Zerobounce.validate('valid@example.com')
|
96
96
|
# Zerobounce.validate('valid@example.com', '192.168.0.1') # optional IP address
|
97
97
|
=>
|
98
98
|
{"address"=>"valid@example.com",
|
@@ -126,11 +126,11 @@ emails
|
|
126
126
|
"toxic@example.com",
|
127
127
|
"donotmail@example.com",
|
128
128
|
"spamtrap@example.com"]
|
129
|
-
|
130
|
-
# ip_addresses
|
129
|
+
|
130
|
+
# ip_addresses
|
131
131
|
=> ["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
132
|
# Zerobounce.validate_batch(emails, ip_addresses) # optional ip_addresses parameter
|
133
|
-
|
133
|
+
|
134
134
|
Zerobounce.validate_batch(emails)
|
135
135
|
=>
|
136
136
|
[{"address"=>"disposable@example.com",
|
@@ -263,14 +263,14 @@ Send file
|
|
263
263
|
"file_name"=>"validation.csv",
|
264
264
|
"file_id"=>"75d854a6-565c-49f9-b4c8-b3344480ec4c"}
|
265
265
|
# file_id will be required for next steps
|
266
|
-
# optional named parameters:
|
266
|
+
# optional named parameters:
|
267
267
|
email_address_column: 1,
|
268
268
|
first_name_column: 2,
|
269
269
|
last_name_column: 3,
|
270
270
|
gender_column: 4,
|
271
271
|
has_header_row: true,
|
272
272
|
return_url: nil # results callback url
|
273
|
-
# Zerobounce.validate_file_send(validate_file_path, email_address_column: 1, gender_column: 4)
|
273
|
+
# Zerobounce.validate_file_send(validate_file_path, email_address_column: 1, gender_column: 4)
|
274
274
|
```
|
275
275
|
|
276
276
|
Check file
|
@@ -361,6 +361,55 @@ Zerobounce.validate_file_delete(file_id)
|
|
361
361
|
```
|
362
362
|
|
363
363
|
|
364
|
+
### More details on CSV file submission and CSV result retrieval
|
365
|
+
|
366
|
+
This applies for both 'Email validation' and 'AI Scoring' functionalities.
|
367
|
+
|
368
|
+
**The data** of the submitted CSV file **will be included** in the result CSV file. Therefore, the first columns of the result CSV file will consist of the submitted data and the following columns will provide information specific to each functionality.
|
369
|
+
|
370
|
+
#### 'Email validation'
|
371
|
+
|
372
|
+
The additional columns that would be included in result CSV file:
|
373
|
+
* ZB Status
|
374
|
+
* ZB Sub Status
|
375
|
+
* ZB Account
|
376
|
+
* ZB Domain
|
377
|
+
* ZB First Name
|
378
|
+
* ZB Last Name
|
379
|
+
* ZB Gender
|
380
|
+
* ZB Free Email
|
381
|
+
* ZB MX Found
|
382
|
+
* ZB MX Record
|
383
|
+
* ZB SMTP Provider
|
384
|
+
* ZB Did You Mean
|
385
|
+
* ZB City
|
386
|
+
* ZB Region/State
|
387
|
+
* ZB Zip Code
|
388
|
+
* ZB Country
|
389
|
+
|
390
|
+
When `has_header_row: true` is provided to `validate_file_send()` method, original columns of the submitted file will be retained.
|
391
|
+
|
392
|
+
When `has_header_row: false`, the columns that were explicitly specified in `validate_file_send()` will be given the following column title:
|
393
|
+
```
|
394
|
+
email_address_column => "Email Address"
|
395
|
+
first_name_column => "First Name"
|
396
|
+
last_name_column => "Last Name"
|
397
|
+
gender_column => "Gender"
|
398
|
+
```
|
399
|
+
|
400
|
+
Any additional that were not (or can not be) specified by parameters, will be given column title "Custom".
|
401
|
+
|
402
|
+
|
403
|
+
#### 'AI Scoring':
|
404
|
+
The additional _column_ that would be included in result CSV file:
|
405
|
+
* ZeroBounceQualityScore
|
406
|
+
|
407
|
+
When `has_header_row: true` is provided to `scoring_file_send()` method, original columns of the submitted file will be retained.
|
408
|
+
|
409
|
+
|
410
|
+
When `has_header_row: false` is provided to `scoring_file_send()` method, column title for the email column (as well as the other columns) will be _Email Address_.
|
411
|
+
|
412
|
+
|
364
413
|
### Email Finder
|
365
414
|
|
366
415
|
Guess Format
|
data/documentation.md
CHANGED
@@ -26,7 +26,7 @@ Zerobounce.configure do |config|
|
|
26
26
|
...
|
27
27
|
end
|
28
28
|
```
|
29
|
-
or
|
29
|
+
or
|
30
30
|
```
|
31
31
|
Zerobounce.config.apikey = '<zerobounce-api-key>'
|
32
32
|
...
|
@@ -88,7 +88,7 @@ Zerobounce.api_usage(Date.today, Date.today)
|
|
88
88
|
|
89
89
|
Validate single eMail
|
90
90
|
```ruby
|
91
|
-
Zerobounce.validate('valid@example.com')
|
91
|
+
Zerobounce.validate('valid@example.com')
|
92
92
|
### Zerobounce.validate('valid@example.com', '192.168.0.1') # optional IP address
|
93
93
|
=>
|
94
94
|
{"address"=>"valid@example.com",
|
@@ -122,11 +122,11 @@ emails
|
|
122
122
|
"toxic@example.com",
|
123
123
|
"donotmail@example.com",
|
124
124
|
"spamtrap@example.com"]
|
125
|
-
|
126
|
-
### ip_addresses
|
125
|
+
|
126
|
+
### ip_addresses
|
127
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"]
|
128
128
|
### Zerobounce.validate_batch(emails, ip_addresses) # optional ip_addresses parameter
|
129
|
-
|
129
|
+
|
130
130
|
Zerobounce.validate_batch(emails)
|
131
131
|
=>
|
132
132
|
[{"address"=>"disposable@example.com",
|
@@ -259,14 +259,14 @@ Send file
|
|
259
259
|
"file_name"=>"validation.csv",
|
260
260
|
"file_id"=>"75d854a6-565c-49f9-b4c8-b3344480ec4c"}
|
261
261
|
### file_id will be required for next steps
|
262
|
-
### optional named parameters:
|
262
|
+
### optional named parameters:
|
263
263
|
email_address_column: 1,
|
264
264
|
first_name_column: 2,
|
265
265
|
last_name_column: 3,
|
266
266
|
gender_column: 4,
|
267
267
|
has_header_row: true,
|
268
268
|
return_url: nil ### results callback url
|
269
|
-
### Zerobounce.validate_file_send(validate_file_path, email_address_column: 1, gender_column: 4)
|
269
|
+
### Zerobounce.validate_file_send(validate_file_path, email_address_column: 1, gender_column: 4)
|
270
270
|
```
|
271
271
|
|
272
272
|
Check file
|
@@ -356,6 +356,50 @@ Zerobounce.validate_file_delete(file_id)
|
|
356
356
|
=> {"success"=>false, "message"=>"File cannot be found."}
|
357
357
|
```
|
358
358
|
|
359
|
+
##### Email Finder
|
360
|
+
|
361
|
+
Guess Format
|
362
|
+
```ruby
|
363
|
+
Zerobounce.guessformat("zerobounce.net")
|
364
|
+
=>
|
365
|
+
{"email"=>"",
|
366
|
+
"domain"=>"zerobounce.net",
|
367
|
+
"format"=>"first.last",
|
368
|
+
"status"=>"",
|
369
|
+
"sub_status"=>"",
|
370
|
+
"confidence"=>"high",
|
371
|
+
"did_you_mean"=>"",
|
372
|
+
"failure_reason"=>"",
|
373
|
+
"other_domain_formats"=>
|
374
|
+
[{"format"=>"first", "confidence"=>"high"},
|
375
|
+
{"format"=>"last.first", "confidence"=>"high"},
|
376
|
+
{"format"=>"lfirst", "confidence"=>"high"},
|
377
|
+
{"format"=>"lastfirst", "confidence"=>"high"},
|
378
|
+
{"format"=>"firstl", "confidence"=>"high"},
|
379
|
+
{"format"=>"last", "confidence"=>"medium"},
|
380
|
+
{"format"=>"first.middle.last", "confidence"=>"medium"},
|
381
|
+
{"format"=>"first-last", "confidence"=>"medium"},
|
382
|
+
{"format"=>"l.first", "confidence"=>"medium"},
|
383
|
+
{"format"=>"f.last", "confidence"=>"medium"},
|
384
|
+
{"format"=>"f-last", "confidence"=>"medium"},
|
385
|
+
{"format"=>"first.l", "confidence"=>"medium"},
|
386
|
+
{"format"=>"first-l", "confidence"=>"medium"},
|
387
|
+
{"format"=>"firstlast", "confidence"=>"medium"},
|
388
|
+
{"format"=>"first_l", "confidence"=>"medium"},
|
389
|
+
{"format"=>"f_last", "confidence"=>"medium"},
|
390
|
+
{"format"=>"last.f", "confidence"=>"medium"},
|
391
|
+
{"format"=>"last-f", "confidence"=>"medium"},
|
392
|
+
{"format"=>"last-first", "confidence"=>"medium"},
|
393
|
+
{"format"=>"first_last", "confidence"=>"medium"},
|
394
|
+
{"format"=>"last_f", "confidence"=>"medium"},
|
395
|
+
{"format"=>"last_first", "confidence"=>"medium"},
|
396
|
+
{"format"=>"flast", "confidence"=>"medium"},
|
397
|
+
{"format"=>"lastf", "confidence"=>"medium"},
|
398
|
+
{"format"=>"l-first", "confidence"=>"low"},
|
399
|
+
{"format"=>"l_first", "confidence"=>"low"}]}
|
400
|
+
# Zerobounce.guessformat("zerobounce.net", first_name: "John", middle_name: 'Deere', last_name: "Doe")
|
401
|
+
```
|
402
|
+
|
359
403
|
|
360
404
|
#### Development
|
361
405
|
|
data/documentation_es.md
CHANGED
@@ -88,7 +88,7 @@ Zerobounce.api_usage(Date.today, Date.today)
|
|
88
88
|
|
89
89
|
Validar un solo correo electrónico
|
90
90
|
```ruby
|
91
|
-
Zerobounce.validate('valid@example.com')
|
91
|
+
Zerobounce.validate('valid@example.com')
|
92
92
|
### Zerobounce.validate('valid@example.com', '192.168.0.1') # dirección IP opcional
|
93
93
|
=>
|
94
94
|
{"address"=>"valid@example.com",
|
@@ -124,11 +124,11 @@ emails
|
|
124
124
|
"toxic@example.com",
|
125
125
|
"donotmail@example.com",
|
126
126
|
"spamtrap@example.com"]
|
127
|
-
|
128
|
-
### ip_addresses
|
127
|
+
|
128
|
+
### ip_addresses
|
129
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
130
|
### Zerobounce.validate_batch(emails, ip_addresses) # parámetro ip_addresses opcional
|
131
|
-
|
131
|
+
|
132
132
|
Zerobounce.validate_batch(emails)
|
133
133
|
=>
|
134
134
|
[{"address"=>"disposable@example.com",
|
@@ -263,14 +263,14 @@ Zerobounce.validate_file_send(validate_file_path)
|
|
263
263
|
"file_name"=>"validation.csv",
|
264
264
|
"file_id"=>"75d854a6-565c-49f9-b4c8-b3344480ec4c"}
|
265
265
|
### se requerirá el file_id para los próximos pasos
|
266
|
-
### parámetros opcionales:
|
266
|
+
### parámetros opcionales:
|
267
267
|
email_address_column: 1,
|
268
268
|
first_name_column: 2,
|
269
269
|
last_name_column: 3,
|
270
270
|
gender_column: 4,
|
271
271
|
has_header_row: true,
|
272
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)
|
273
|
+
### Zerobounce.validate_file_send(validate_file_path, email_address_column: 1, gender_column: 4)
|
274
274
|
```
|
275
275
|
|
276
276
|
Verificar archivo
|
@@ -368,6 +368,50 @@ Zerobounce.validate_file_delete(file_id)
|
|
368
368
|
=> {"success"=>false, "message"=>"File cannot be found."}
|
369
369
|
```
|
370
370
|
|
371
|
+
### Email Finder
|
372
|
+
|
373
|
+
Guess Format
|
374
|
+
```ruby
|
375
|
+
Zerobounce.guessformat("zerobounce.net")
|
376
|
+
=>
|
377
|
+
{"email"=>"",
|
378
|
+
"domain"=>"zerobounce.net",
|
379
|
+
"format"=>"first.last",
|
380
|
+
"status"=>"",
|
381
|
+
"sub_status"=>"",
|
382
|
+
"confidence"=>"high",
|
383
|
+
"did_you_mean"=>"",
|
384
|
+
"failure_reason"=>"",
|
385
|
+
"other_domain_formats"=>
|
386
|
+
[{"format"=>"first", "confidence"=>"high"},
|
387
|
+
{"format"=>"last.first", "confidence"=>"high"},
|
388
|
+
{"format"=>"lfirst", "confidence"=>"high"},
|
389
|
+
{"format"=>"lastfirst", "confidence"=>"high"},
|
390
|
+
{"format"=>"firstl", "confidence"=>"high"},
|
391
|
+
{"format"=>"last", "confidence"=>"medium"},
|
392
|
+
{"format"=>"first.middle.last", "confidence"=>"medium"},
|
393
|
+
{"format"=>"first-last", "confidence"=>"medium"},
|
394
|
+
{"format"=>"l.first", "confidence"=>"medium"},
|
395
|
+
{"format"=>"f.last", "confidence"=>"medium"},
|
396
|
+
{"format"=>"f-last", "confidence"=>"medium"},
|
397
|
+
{"format"=>"first.l", "confidence"=>"medium"},
|
398
|
+
{"format"=>"first-l", "confidence"=>"medium"},
|
399
|
+
{"format"=>"firstlast", "confidence"=>"medium"},
|
400
|
+
{"format"=>"first_l", "confidence"=>"medium"},
|
401
|
+
{"format"=>"f_last", "confidence"=>"medium"},
|
402
|
+
{"format"=>"last.f", "confidence"=>"medium"},
|
403
|
+
{"format"=>"last-f", "confidence"=>"medium"},
|
404
|
+
{"format"=>"last-first", "confidence"=>"medium"},
|
405
|
+
{"format"=>"first_last", "confidence"=>"medium"},
|
406
|
+
{"format"=>"last_f", "confidence"=>"medium"},
|
407
|
+
{"format"=>"last_first", "confidence"=>"medium"},
|
408
|
+
{"format"=>"flast", "confidence"=>"medium"},
|
409
|
+
{"format"=>"lastf", "confidence"=>"medium"},
|
410
|
+
{"format"=>"l-first", "confidence"=>"low"},
|
411
|
+
{"format"=>"l_first", "confidence"=>"low"}]}
|
412
|
+
# Zerobounce.guessformat("zerobounce.net", first_name: "John", middle_name: 'Deere', last_name: "Doe")
|
413
|
+
```
|
414
|
+
|
371
415
|
|
372
416
|
#### Desarrollo
|
373
417
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rest-client'
|
4
|
+
require 'dotenv'
|
4
5
|
|
5
6
|
module Zerobounce
|
6
7
|
# Configuration object for Zerobounce.
|
@@ -26,7 +27,8 @@ module Zerobounce
|
|
26
27
|
attr_accessor :mock
|
27
28
|
|
28
29
|
def initialize(mock=false)
|
29
|
-
|
30
|
+
if File.file?(".env") then Dotenv.load(".env") else Dotenv.load end
|
31
|
+
self.host = 'https://api.zerobounce.in'
|
30
32
|
self.apikey = ENV['ZEROBOUNCE_API_KEY']
|
31
33
|
self.valid_statuses = %i[valid catch_all]
|
32
34
|
self.headers = { user_agent: "ZerobounceRubyGem/#{Zerobounce::VERSION}" }
|
@@ -3,15 +3,15 @@
|
|
3
3
|
require 'zerobounce/base_request'
|
4
4
|
|
5
5
|
module Zerobounce
|
6
|
-
|
6
|
+
|
7
7
|
# Sends the HTTP request.
|
8
8
|
class MockRequest < BaseRequest
|
9
|
-
|
9
|
+
|
10
10
|
def self.get(path, params, content_type='application/json')
|
11
11
|
response = self._get(Zerobounce::API_ROOT_URL, path, params, content_type)
|
12
12
|
if response.headers[:content_type] == 'application/json'
|
13
13
|
response_body = response.body
|
14
|
-
response_body_json = JSON.parse(response_body)
|
14
|
+
response_body_json = JSON.parse(response_body)
|
15
15
|
|
16
16
|
raise (response_body_json['error']) if response_body_json.key?('error')
|
17
17
|
raise (response_body_json['errors'][0]['error']) \
|
@@ -19,7 +19,7 @@ module Zerobounce
|
|
19
19
|
response_body_json['errors'].length > 0
|
20
20
|
|
21
21
|
return response_body_json
|
22
|
-
else
|
22
|
+
else
|
23
23
|
return response
|
24
24
|
end
|
25
25
|
end
|
@@ -46,7 +46,7 @@ module Zerobounce
|
|
46
46
|
content_type, filepath)
|
47
47
|
if response.headers[:content_type] == 'application/json'
|
48
48
|
response_body = response.body
|
49
|
-
response_body_json = JSON.parse(response_body)
|
49
|
+
response_body_json = JSON.parse(response_body)
|
50
50
|
|
51
51
|
raise (response_body_json['error']) if response_body_json.key?('error')
|
52
52
|
raise (response_body_json['errors'][0]['error']) \
|
data/lib/zerobounce/request.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'stringio'
|
3
4
|
require 'zerobounce/base_request'
|
4
5
|
|
5
6
|
module Zerobounce
|
6
|
-
|
7
|
+
|
7
8
|
# Sends the HTTP request.
|
8
9
|
class Request < BaseRequest
|
9
10
|
|
@@ -11,15 +12,18 @@ module Zerobounce
|
|
11
12
|
response = self._get(Zerobounce::API_ROOT_URL, path, params, content_type)
|
12
13
|
if response.headers[:content_type] == 'application/json'
|
13
14
|
response_body = response.body
|
14
|
-
response_body_json = JSON.parse(response_body)
|
15
|
+
response_body_json = JSON.parse(response_body)
|
15
16
|
|
16
17
|
raise (response_body_json['error']) if response_body_json.key?('error')
|
18
|
+
raise (response_body_json['Message']) \
|
19
|
+
if response_body_json.key?('Message') and \
|
20
|
+
response_body_json.length == 1
|
17
21
|
raise (response_body_json['errors'][0]['error']) \
|
18
22
|
if response_body_json.key?('errors') and \
|
19
23
|
response_body_json['errors'].length > 0
|
20
24
|
|
21
25
|
return response_body_json
|
22
|
-
else
|
26
|
+
else
|
23
27
|
return response
|
24
28
|
end
|
25
29
|
end
|
@@ -37,7 +41,9 @@ module Zerobounce
|
|
37
41
|
|
38
42
|
return response_body_json
|
39
43
|
else
|
40
|
-
|
44
|
+
content = StringIO.new(response.body)
|
45
|
+
content.set_encoding_by_bom
|
46
|
+
return content.string
|
41
47
|
end
|
42
48
|
end
|
43
49
|
|
@@ -46,7 +52,7 @@ module Zerobounce
|
|
46
52
|
content_type, filepath)
|
47
53
|
if response.headers[:content_type] == 'application/json'
|
48
54
|
response_body = response.body
|
49
|
-
response_body_json = JSON.parse(response_body)
|
55
|
+
response_body_json = JSON.parse(response_body)
|
50
56
|
|
51
57
|
raise (response_body_json['error']) if response_body_json.key?('error')
|
52
58
|
raise (response_body_json['errors'][0]['error']) \
|
data/lib/zerobounce/version.rb
CHANGED
data/lib/zerobounce.rb
CHANGED
@@ -11,7 +11,7 @@ require 'zerobounce/configuration'
|
|
11
11
|
|
12
12
|
# Validate an email address with Zerobounce.net
|
13
13
|
module Zerobounce
|
14
|
-
|
14
|
+
|
15
15
|
API_ROOT_URL = 'https://api.zerobounce.in/v2'
|
16
16
|
BULK_API_ROOT_URL = 'https://bulkapi.zerobounce.in/v2'
|
17
17
|
|
@@ -44,7 +44,7 @@ module Zerobounce
|
|
44
44
|
#
|
45
45
|
# @param [String] :email The email address to validate.
|
46
46
|
# @option [String] :ip_address IP address corresponding to the email.
|
47
|
-
#
|
47
|
+
#
|
48
48
|
# @return [Hash]
|
49
49
|
# {
|
50
50
|
# "address": "valid@example.com",
|
@@ -96,16 +96,16 @@ module Zerobounce
|
|
96
96
|
# @param [String] email
|
97
97
|
# @return [Boolean]
|
98
98
|
# def invalid?(email)
|
99
|
-
# # todo:
|
99
|
+
# # todo:
|
100
100
|
# validate(email: email).invalid?
|
101
101
|
# end
|
102
102
|
|
103
|
-
# Get API usage
|
104
|
-
#
|
103
|
+
# Get API usage
|
104
|
+
#
|
105
105
|
# @param [Date] start_date
|
106
106
|
# @param [Date] end_date
|
107
|
-
#
|
108
|
-
# @return [Hash]
|
107
|
+
#
|
108
|
+
# @return [Hash]
|
109
109
|
# {
|
110
110
|
# "total": 5,
|
111
111
|
# "status_valid": 4,
|
@@ -156,8 +156,8 @@ module Zerobounce
|
|
156
156
|
# Get Activty for email
|
157
157
|
#
|
158
158
|
# @param [String] :email Email to get activity for
|
159
|
-
#
|
160
|
-
# @return [Hash]
|
159
|
+
#
|
160
|
+
# @return [Hash]
|
161
161
|
# {
|
162
162
|
# "found": true,
|
163
163
|
# "active_in_days": "180"
|
@@ -168,10 +168,10 @@ module Zerobounce
|
|
168
168
|
end
|
169
169
|
|
170
170
|
# Validate email batch
|
171
|
-
#
|
171
|
+
#
|
172
172
|
# @param [Array] :emails List of email addresses to validate.
|
173
173
|
# @option [Array] :ip_addresses Corresponding list of IP addresses.
|
174
|
-
#
|
174
|
+
#
|
175
175
|
# @return [Array] list of validate result for each element
|
176
176
|
# [
|
177
177
|
# {
|
@@ -220,7 +220,7 @@ module Zerobounce
|
|
220
220
|
end
|
221
221
|
|
222
222
|
# Validate CSV file
|
223
|
-
#
|
223
|
+
#
|
224
224
|
# @param [String] :filepath Path to the file to be uploaded
|
225
225
|
# @option [Int] :email_address_column Specify which column the email address is on
|
226
226
|
# @option [Int] :first_name_column Specify which column the first name is on
|
@@ -228,7 +228,7 @@ module Zerobounce
|
|
228
228
|
# @option [Int] :gender_column Specify which column the gender is on
|
229
229
|
# @option [Int] :has_header_row Specify whether the file includes a header row or not
|
230
230
|
# @option [Int] :return_url Specify a callback URL (if nil, no callback will be performed)
|
231
|
-
#
|
231
|
+
#
|
232
232
|
# @return [Hash]
|
233
233
|
# {
|
234
234
|
# "success": true,
|
@@ -247,19 +247,19 @@ module Zerobounce
|
|
247
247
|
)
|
248
248
|
params = {
|
249
249
|
email_address_column: email_address_column,
|
250
|
-
first_name_column: first_name_column,
|
251
|
-
last_name_column: last_name_column,
|
252
|
-
gender_column: gender_column,
|
253
250
|
has_header_row: has_header_row,
|
254
251
|
}
|
252
|
+
params[:first_name_column] = first_name_column if first_name_column
|
253
|
+
params[:last_name_column] = last_name_column if last_name_column
|
254
|
+
params[:gender_column] = gender_column if gender_column
|
255
255
|
params[:return_url] = return_url if return_url
|
256
256
|
@@request.bulk_post('sendfile', params, 'multipart/form-data', filepath)
|
257
257
|
end
|
258
258
|
|
259
259
|
# Get validate file status
|
260
|
-
#
|
260
|
+
#
|
261
261
|
# @param [String] :file_id Id of the file.
|
262
|
-
#
|
262
|
+
#
|
263
263
|
# @return [Hash]
|
264
264
|
# {
|
265
265
|
# "success": true,
|
@@ -270,28 +270,28 @@ module Zerobounce
|
|
270
270
|
# "complete_percentage": "100%",
|
271
271
|
# "error_reason": null,
|
272
272
|
# "return_url": null
|
273
|
-
# }
|
273
|
+
# }
|
274
274
|
def validate_file_check(file_id)
|
275
275
|
# todo:
|
276
276
|
params = {file_id: file_id}
|
277
277
|
@@request.bulk_get('filestatus', params)
|
278
278
|
end
|
279
279
|
|
280
|
-
# Get validate results file
|
281
|
-
#
|
280
|
+
# Get validate results file
|
281
|
+
#
|
282
282
|
# @param [String] :file_id Id of the file.
|
283
|
-
#
|
284
|
-
# @return [String/File?]
|
283
|
+
#
|
284
|
+
# @return [String/File?]
|
285
285
|
def validate_file_get(file_id)
|
286
286
|
# todo:
|
287
287
|
params = {file_id: file_id}
|
288
288
|
@@request.bulk_get('getfile', params)
|
289
289
|
end
|
290
290
|
|
291
|
-
# Delete validate file
|
292
|
-
#
|
291
|
+
# Delete validate file
|
292
|
+
#
|
293
293
|
# @param file_id Id of the file.
|
294
|
-
#
|
294
|
+
#
|
295
295
|
# @return [Hash]
|
296
296
|
# {
|
297
297
|
# "success": true,
|
@@ -306,12 +306,12 @@ module Zerobounce
|
|
306
306
|
end
|
307
307
|
|
308
308
|
# Score CSV file
|
309
|
-
#
|
309
|
+
#
|
310
310
|
# @param [String] :filepath Path to the file to be uploaded
|
311
311
|
# @option [Int] :email_address_column Specify which column the email address is on
|
312
312
|
# @option [Int] :has_header_row Specify whether the file includes a header row or not
|
313
313
|
# @option [Int] :return_url Specify a callback URL (if nil, no callback will be performed)
|
314
|
-
#
|
314
|
+
#
|
315
315
|
# @return [Hash]
|
316
316
|
# {
|
317
317
|
# "success": true,
|
@@ -333,11 +333,11 @@ module Zerobounce
|
|
333
333
|
@@request.bulk_post('scoring/sendfile', params, 'multipart/form-data', filepath)
|
334
334
|
end
|
335
335
|
|
336
|
-
# Get validate results file
|
337
|
-
#
|
336
|
+
# Get validate results file
|
337
|
+
#
|
338
338
|
# @param [String] :file_id Id of the file.
|
339
|
-
#
|
340
|
-
# @return [String/File?]
|
339
|
+
#
|
340
|
+
# @return [String/File?]
|
341
341
|
def scoring_file_get(file_id)
|
342
342
|
# todo:
|
343
343
|
params = {file_id: file_id}
|
@@ -345,9 +345,9 @@ module Zerobounce
|
|
345
345
|
end
|
346
346
|
|
347
347
|
# Get validate file status
|
348
|
-
#
|
348
|
+
#
|
349
349
|
# @param [String] :file_id Id of the file.
|
350
|
-
#
|
350
|
+
#
|
351
351
|
# @return [Hash]
|
352
352
|
# {
|
353
353
|
# "success": true,
|
@@ -357,16 +357,16 @@ module Zerobounce
|
|
357
357
|
# "file_status": "Complete",
|
358
358
|
# "complete_percentage": "100% Complete.",
|
359
359
|
# "return_url": null
|
360
|
-
# }
|
360
|
+
# }
|
361
361
|
def scoring_file_check(file_id)
|
362
362
|
params = {file_id: file_id}
|
363
363
|
@@request.bulk_get('scoring/filestatus', params)
|
364
364
|
end
|
365
365
|
|
366
|
-
# Delete validate file
|
367
|
-
#
|
366
|
+
# Delete validate file
|
367
|
+
#
|
368
368
|
# @param file_id Id of the file.
|
369
|
-
#
|
369
|
+
#
|
370
370
|
# @return [Hash]
|
371
371
|
# {
|
372
372
|
# "success": true,
|
@@ -380,13 +380,13 @@ module Zerobounce
|
|
380
380
|
end
|
381
381
|
|
382
382
|
# Guess email formatDomain to guess format for
|
383
|
-
#
|
383
|
+
#
|
384
384
|
# @param [String] domain Domain to guess format for
|
385
385
|
#
|
386
386
|
# @option [String] first_name First name of target.
|
387
387
|
# @option [String] middle_name Middle name of target.
|
388
388
|
# @option [String] last_name Last name of target.
|
389
|
-
#
|
389
|
+
#
|
390
390
|
# @return [Hash]
|
391
391
|
# {
|
392
392
|
# "email"=>"",
|
data/zerobounce.gemspec
CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
|
|
27
27
|
spec.required_ruby_version = '>= 2.5'
|
28
28
|
|
29
29
|
spec.add_dependency 'rest-client', '~>2.1'
|
30
|
+
spec.add_dependency 'dotenv', '~> 2.8.1'
|
30
31
|
|
31
32
|
spec.add_development_dependency 'bundler', '~> 2.4.6'
|
32
33
|
spec.add_development_dependency 'pry', '~> 0.14.1'
|
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.1.
|
4
|
+
version: 1.1.1
|
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:
|
11
|
+
date: 2024-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: dotenv
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.8.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.8.1
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|