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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a8278f475b837d6886e33154a2ff247f73fece2bc0fc4b248aed572880b10e3
4
- data.tar.gz: ffc573808eb12f36b04024c5a59c0e561eb037cf4c791c867d265908b1947ba6
3
+ metadata.gz: 6fa7b16ed7f3d6433b147c71b8653f912ed92233e0a8886296f6dfc3119fa269
4
+ data.tar.gz: 52696da7f11e651bc6ddc6ab51979997fdaf9d4a181030add5477cec2d91d454
5
5
  SHA512:
6
- metadata.gz: 105242c5a61848a142aaf5f81573dc1e2e26f8f8d15c671cec7670fa0f78d78eb3cc166752ae159b0df5084ba6415e5b03c0afa0ad0aee5943178180830a0171
7
- data.tar.gz: 1d8bc63a912082434db30dbcedbdf2955c468d24c9e81d0934e41110c77fd77a7ebe6cc7e435893b3d71e3015844ddf712da8710b1052c74646162ca5844aa1c
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.0)
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
 
@@ -7,11 +7,11 @@ require 'rest-client'
7
7
 
8
8
 
9
9
  module Zerobounce
10
-
10
+
11
11
  # Sends the HTTP request.
12
12
  class BaseRequest
13
13
 
14
- protected
14
+ protected
15
15
 
16
16
  def self._get(root, path, params, content_type='application/json')
17
17
 
@@ -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
- self.host = 'https://api.zerobounce.net'
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']) \
@@ -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
- return response.body
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']) \
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Zerobounce
4
4
  # The version of the gem.
5
- VERSION = '1.1.0'
5
+ VERSION = '1.1.1'
6
6
  end
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.0
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: 2023-09-04 00:00:00.000000000 Z
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