zerobounce-sdk 1.0.1 → 1.1.1
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/.gitignore +5 -0
 - data/Gemfile.lock +6 -4
 - data/README.md +100 -7
 - data/{README_es.md → documentation.md} +74 -28
 - data/documentation_es.md +449 -0
 - data/lib/zerobounce/base_request.rb +2 -2
 - data/lib/zerobounce/configuration.rb +2 -0
 - 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 +102 -39
 - data/zerobounce.gemspec +1 -0
 - metadata +18 -5
 - data/output.err +0 -737
 - data/output.log +0 -250
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 804ff0380f6e305c6b80ceaec623ed06f014927074ebef93598b9dab3d23c988
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 64ff74c48f382f6cb50d29c1d9f6e95d149929289e3971f27c2e1cfcc7088706
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 8c4b82770126e3f7f0ef3699688ad11bf526163df669d3a6d637ff87d183955b1876e99e2a9e953eebb5b4102863ab8ff5204417a77d7e47722fe3b14977abcf
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a9ebe2bd4422d96e85ffd5331456cb0669090a1ade71f828249b32a44730e843b05ffa24148673b353130b4e896075acf035d59c9963bc83ad60dcb841c56f4f
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,7 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                zerobounce ( 
     | 
| 
      
 4 
     | 
    
         
            +
                zerobounce-sdk (1.1.1)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  dotenv (~> 2.8.1)
         
     | 
| 
       5 
6 
     | 
    
         
             
                  rest-client (~> 2.1)
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
            GEM
         
     | 
| 
         @@ -17,15 +18,16 @@ 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)
         
     | 
| 
       23 
25 
     | 
    
         
             
                  domain_name (~> 0.5)
         
     | 
| 
       24 
26 
     | 
    
         
             
                json (2.6.3)
         
     | 
| 
       25 
27 
     | 
    
         
             
                method_source (1.0.0)
         
     | 
| 
       26 
     | 
    
         
            -
                mime-types (3. 
     | 
| 
      
 28 
     | 
    
         
            +
                mime-types (3.5.1)
         
     | 
| 
       27 
29 
     | 
    
         
             
                  mime-types-data (~> 3.2015)
         
     | 
| 
       28 
     | 
    
         
            -
                mime-types-data (3.2023. 
     | 
| 
      
 30 
     | 
    
         
            +
                mime-types-data (3.2023.0808)
         
     | 
| 
       29 
31 
     | 
    
         
             
                netrc (0.11.0)
         
     | 
| 
       30 
32 
     | 
    
         
             
                parallel (1.22.1)
         
     | 
| 
       31 
33 
     | 
    
         
             
                parser (3.2.2.0)
         
     | 
| 
         @@ -115,7 +117,7 @@ DEPENDENCIES 
     | 
|
| 
       115 
117 
     | 
    
         
             
              vcr (~> 6.1.0)
         
     | 
| 
       116 
118 
     | 
    
         
             
              webmock (~> 3.18)
         
     | 
| 
       117 
119 
     | 
    
         
             
              yard (~> 0.9.26)
         
     | 
| 
       118 
     | 
    
         
            -
              zerobounce!
         
     | 
| 
      
 120 
     | 
    
         
            +
              zerobounce-sdk!
         
     | 
| 
       119 
121 
     | 
    
         | 
| 
       120 
122 
     | 
    
         
             
            BUNDLED WITH
         
     | 
| 
       121 
123 
     | 
    
         
             
               2.4.6
         
     | 
    
        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,99 @@ 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 
     | 
    
         
            +
             
     | 
| 
      
 413 
     | 
    
         
            +
            ### Email Finder
         
     | 
| 
      
 414 
     | 
    
         
            +
             
     | 
| 
      
 415 
     | 
    
         
            +
            Guess Format
         
     | 
| 
      
 416 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 417 
     | 
    
         
            +
            Zerobounce.guessformat("zerobounce.net")
         
     | 
| 
      
 418 
     | 
    
         
            +
            =>
         
     | 
| 
      
 419 
     | 
    
         
            +
            {"email"=>"",
         
     | 
| 
      
 420 
     | 
    
         
            +
             "domain"=>"zerobounce.net",
         
     | 
| 
      
 421 
     | 
    
         
            +
             "format"=>"first.last",
         
     | 
| 
      
 422 
     | 
    
         
            +
             "status"=>"",
         
     | 
| 
      
 423 
     | 
    
         
            +
             "sub_status"=>"",
         
     | 
| 
      
 424 
     | 
    
         
            +
             "confidence"=>"high",
         
     | 
| 
      
 425 
     | 
    
         
            +
             "did_you_mean"=>"",
         
     | 
| 
      
 426 
     | 
    
         
            +
             "failure_reason"=>"",
         
     | 
| 
      
 427 
     | 
    
         
            +
             "other_domain_formats"=>
         
     | 
| 
      
 428 
     | 
    
         
            +
              [{"format"=>"first", "confidence"=>"high"},
         
     | 
| 
      
 429 
     | 
    
         
            +
               {"format"=>"last.first", "confidence"=>"high"},
         
     | 
| 
      
 430 
     | 
    
         
            +
               {"format"=>"lfirst", "confidence"=>"high"},
         
     | 
| 
      
 431 
     | 
    
         
            +
               {"format"=>"lastfirst", "confidence"=>"high"},
         
     | 
| 
      
 432 
     | 
    
         
            +
               {"format"=>"firstl", "confidence"=>"high"},
         
     | 
| 
      
 433 
     | 
    
         
            +
               {"format"=>"last", "confidence"=>"medium"},
         
     | 
| 
      
 434 
     | 
    
         
            +
               {"format"=>"first.middle.last", "confidence"=>"medium"},
         
     | 
| 
      
 435 
     | 
    
         
            +
               {"format"=>"first-last", "confidence"=>"medium"},
         
     | 
| 
      
 436 
     | 
    
         
            +
               {"format"=>"l.first", "confidence"=>"medium"},
         
     | 
| 
      
 437 
     | 
    
         
            +
               {"format"=>"f.last", "confidence"=>"medium"},
         
     | 
| 
      
 438 
     | 
    
         
            +
               {"format"=>"f-last", "confidence"=>"medium"},
         
     | 
| 
      
 439 
     | 
    
         
            +
               {"format"=>"first.l", "confidence"=>"medium"},
         
     | 
| 
      
 440 
     | 
    
         
            +
               {"format"=>"first-l", "confidence"=>"medium"},
         
     | 
| 
      
 441 
     | 
    
         
            +
               {"format"=>"firstlast", "confidence"=>"medium"},
         
     | 
| 
      
 442 
     | 
    
         
            +
               {"format"=>"first_l", "confidence"=>"medium"},
         
     | 
| 
      
 443 
     | 
    
         
            +
               {"format"=>"f_last", "confidence"=>"medium"},
         
     | 
| 
      
 444 
     | 
    
         
            +
               {"format"=>"last.f", "confidence"=>"medium"},
         
     | 
| 
      
 445 
     | 
    
         
            +
               {"format"=>"last-f", "confidence"=>"medium"},
         
     | 
| 
      
 446 
     | 
    
         
            +
               {"format"=>"last-first", "confidence"=>"medium"},
         
     | 
| 
      
 447 
     | 
    
         
            +
               {"format"=>"first_last", "confidence"=>"medium"},
         
     | 
| 
      
 448 
     | 
    
         
            +
               {"format"=>"last_f", "confidence"=>"medium"},
         
     | 
| 
      
 449 
     | 
    
         
            +
               {"format"=>"last_first", "confidence"=>"medium"},
         
     | 
| 
      
 450 
     | 
    
         
            +
               {"format"=>"flast", "confidence"=>"medium"},
         
     | 
| 
      
 451 
     | 
    
         
            +
               {"format"=>"lastf", "confidence"=>"medium"},
         
     | 
| 
      
 452 
     | 
    
         
            +
               {"format"=>"l-first", "confidence"=>"low"},
         
     | 
| 
      
 453 
     | 
    
         
            +
               {"format"=>"l_first", "confidence"=>"low"}]}
         
     | 
| 
      
 454 
     | 
    
         
            +
            # Zerobounce.guessformat("zerobounce.net", first_name: "John", middle_name: 'Deere', last_name: "Doe")
         
     | 
| 
      
 455 
     | 
    
         
            +
            ```
         
     | 
| 
      
 456 
     | 
    
         
            +
             
     | 
| 
       364 
457 
     | 
    
         
             
            ## Development
         
     | 
| 
       365 
458 
     | 
    
         | 
| 
       366 
459 
     | 
    
         
             
            After checking out the repo run tests
         
     | 
| 
         @@ -1,8 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
            # Zerobounce
         
     | 
| 
       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 'zerobounce-sdk'
         
     | 
| 
         @@ -30,7 +26,7 @@ Zerobounce.configure do |config| 
     | 
|
| 
       30 
26 
     | 
    
         
             
              ...
         
     | 
| 
       31 
27 
     | 
    
         
             
            end
         
     | 
| 
       32 
28 
     | 
    
         
             
            ```
         
     | 
| 
       33 
     | 
    
         
            -
            or 
     | 
| 
      
 29 
     | 
    
         
            +
            or
         
     | 
| 
       34 
30 
     | 
    
         
             
            ```
         
     | 
| 
       35 
31 
     | 
    
         
             
            Zerobounce.config.apikey = '<zerobounce-api-key>'
         
     | 
| 
       36 
32 
     | 
    
         
             
            ...
         
     | 
| 
         @@ -39,7 +35,13 @@ 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
         
     | 
| 
      
 39 
     | 
    
         
            +
            ```
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            Activity
         
     | 
| 
      
 42 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 43 
     | 
    
         
            +
            Zerobounce.activity('ss@gmail.com')
         
     | 
| 
      
 44 
     | 
    
         
            +
            => {"found"=>true, "active_in_days"=>"180"}
         
     | 
| 
       43 
45 
     | 
    
         
             
            ```
         
     | 
| 
       44 
46 
     | 
    
         | 
| 
       45 
47 
     | 
    
         
             
            Usage statistics
         
     | 
| 
         @@ -82,12 +84,12 @@ Zerobounce.api_usage(Date.today, Date.today) 
     | 
|
| 
       82 
84 
     | 
    
         
             
             "end_date"=>"4/28/2023"}
         
     | 
| 
       83 
85 
     | 
    
         
             
            ```
         
     | 
| 
       84 
86 
     | 
    
         | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
      
 87 
     | 
    
         
            +
            ##### Email Validation
         
     | 
| 
       86 
88 
     | 
    
         | 
| 
       87 
89 
     | 
    
         
             
            Validate single eMail
         
     | 
| 
       88 
90 
     | 
    
         
             
            ```ruby
         
     | 
| 
       89 
     | 
    
         
            -
            Zerobounce.validate('valid@example.com') 
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
      
 91 
     | 
    
         
            +
            Zerobounce.validate('valid@example.com')
         
     | 
| 
      
 92 
     | 
    
         
            +
            ### Zerobounce.validate('valid@example.com', '192.168.0.1') # optional IP address
         
     | 
| 
       91 
93 
     | 
    
         
             
            =>
         
     | 
| 
       92 
94 
     | 
    
         
             
            {"address"=>"valid@example.com",
         
     | 
| 
       93 
95 
     | 
    
         
             
             "status"=>"valid",
         
     | 
| 
         @@ -120,11 +122,11 @@ emails 
     | 
|
| 
       120 
122 
     | 
    
         
             
             "toxic@example.com",
         
     | 
| 
       121 
123 
     | 
    
         
             
             "donotmail@example.com",
         
     | 
| 
       122 
124 
     | 
    
         
             
             "spamtrap@example.com"]
         
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
            ### ip_addresses
         
     | 
| 
       125 
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"]
         
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
      
 128 
     | 
    
         
            +
            ### Zerobounce.validate_batch(emails, ip_addresses) # optional ip_addresses parameter
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
       128 
130 
     | 
    
         
             
            Zerobounce.validate_batch(emails)
         
     | 
| 
       129 
131 
     | 
    
         
             
            =>
         
     | 
| 
       130 
132 
     | 
    
         
             
            [{"address"=>"disposable@example.com",
         
     | 
| 
         @@ -243,11 +245,11 @@ Zerobounce.validate_batch(emails) 
     | 
|
| 
       243 
245 
     | 
    
         
             
              "processed_at"=>"2023-04-28 15:21:44.340"}]
         
     | 
| 
       244 
246 
     | 
    
         
             
            ```
         
     | 
| 
       245 
247 
     | 
    
         | 
| 
       246 
     | 
    
         
            -
             
     | 
| 
      
 248 
     | 
    
         
            +
            ###### Batch File Validation
         
     | 
| 
       247 
249 
     | 
    
         | 
| 
       248 
250 
     | 
    
         
             
            Send file
         
     | 
| 
       249 
251 
     | 
    
         
             
            ```ruby
         
     | 
| 
       250 
     | 
    
         
            -
             
     | 
| 
      
 252 
     | 
    
         
            +
            ### sample file can be found in the files folder of this repository
         
     | 
| 
       251 
253 
     | 
    
         
             
             validate_file_path = File.join(Dir.pwd, 'files', 'validation.csv')
         
     | 
| 
       252 
254 
     | 
    
         
             
            => "/home/zb/wrappers/ruby-test/files/validation.csv"
         
     | 
| 
       253 
255 
     | 
    
         
             
             Zerobounce.validate_file_send(validate_file_path)
         
     | 
| 
         @@ -256,15 +258,15 @@ Send file 
     | 
|
| 
       256 
258 
     | 
    
         
             
             "message"=>"File Accepted",
         
     | 
| 
       257 
259 
     | 
    
         
             
             "file_name"=>"validation.csv",
         
     | 
| 
       258 
260 
     | 
    
         
             
             "file_id"=>"75d854a6-565c-49f9-b4c8-b3344480ec4c"}
         
     | 
| 
       259 
     | 
    
         
            -
              
     | 
| 
       260 
     | 
    
         
            -
              
     | 
| 
      
 261 
     | 
    
         
            +
             ### file_id will be required for next steps
         
     | 
| 
      
 262 
     | 
    
         
            +
             ### optional named parameters:
         
     | 
| 
       261 
263 
     | 
    
         
             
                email_address_column: 1,
         
     | 
| 
       262 
264 
     | 
    
         
             
                first_name_column: 2,
         
     | 
| 
       263 
265 
     | 
    
         
             
                last_name_column: 3,
         
     | 
| 
       264 
266 
     | 
    
         
             
                gender_column: 4,
         
     | 
| 
       265 
267 
     | 
    
         
             
                has_header_row: true,
         
     | 
| 
       266 
     | 
    
         
            -
                return_url: nil          
     | 
| 
       267 
     | 
    
         
            -
              
     | 
| 
      
 268 
     | 
    
         
            +
                return_url: nil         ### results callback url
         
     | 
| 
      
 269 
     | 
    
         
            +
             ### Zerobounce.validate_file_send(validate_file_path, email_address_column: 1, gender_column: 4)
         
     | 
| 
       268 
270 
     | 
    
         
             
            ```
         
     | 
| 
       269 
271 
     | 
    
         | 
| 
       270 
272 
     | 
    
         
             
            Check file
         
     | 
| 
         @@ -303,7 +305,7 @@ Zerobounce.validate_file_delete(file_id) 
     | 
|
| 
       303 
305 
     | 
    
         
             
             "file_id"=>"75d854a6-565c-49f9-b4c8-b3344480ec4c"}
         
     | 
| 
       304 
306 
     | 
    
         
             
            ```
         
     | 
| 
       305 
307 
     | 
    
         | 
| 
       306 
     | 
    
         
            -
             
     | 
| 
      
 308 
     | 
    
         
            +
            ##### AI Scoring
         
     | 
| 
       307 
309 
     | 
    
         | 
| 
       308 
310 
     | 
    
         
             
            Send file
         
     | 
| 
       309 
311 
     | 
    
         
             
            ```ruby
         
     | 
| 
         @@ -315,12 +317,12 @@ Zerobounce.scoring_file_send(scoring_file_path) 
     | 
|
| 
       315 
317 
     | 
    
         
             
             "message"=>"File Accepted",
         
     | 
| 
       316 
318 
     | 
    
         
             
             "file_name"=>"scoring.csv",
         
     | 
| 
       317 
319 
     | 
    
         
             
             "file_id"=>"89fb7262-b845-4fa1-aa25-e486347ec64e"}
         
     | 
| 
       318 
     | 
    
         
            -
             
     | 
| 
       319 
     | 
    
         
            -
             
     | 
| 
      
 320 
     | 
    
         
            +
            ### file_id will be required for the next steps
         
     | 
| 
      
 321 
     | 
    
         
            +
            ### optional named parameters
         
     | 
| 
       320 
322 
     | 
    
         
             
                email_address_column: 1,
         
     | 
| 
       321 
323 
     | 
    
         
             
                has_header_row: true,
         
     | 
| 
       322 
     | 
    
         
            -
                return_url: nil          
     | 
| 
       323 
     | 
    
         
            -
             
     | 
| 
      
 324 
     | 
    
         
            +
                return_url: nil         ### results callback url
         
     | 
| 
      
 325 
     | 
    
         
            +
            ### Zerobounce.scoring_file_send(scoring_file_path, email_address_column: 1)
         
     | 
| 
       324 
326 
     | 
    
         
             
            ```
         
     | 
| 
       325 
327 
     | 
    
         | 
| 
       326 
328 
     | 
    
         
             
            File check
         
     | 
| 
         @@ -354,12 +356,56 @@ Zerobounce.validate_file_delete(file_id) 
     | 
|
| 
       354 
356 
     | 
    
         
             
            => {"success"=>false, "message"=>"File cannot be found."}
         
     | 
| 
       355 
357 
     | 
    
         
             
            ```
         
     | 
| 
       356 
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 
     | 
    
         
            +
             
     | 
| 
       357 
403 
     | 
    
         | 
| 
       358 
     | 
    
         
            -
             
     | 
| 
      
 404 
     | 
    
         
            +
            #### Development
         
     | 
| 
       359 
405 
     | 
    
         | 
| 
       360 
406 
     | 
    
         
             
            After checking out the repo run tests
         
     | 
| 
       361 
407 
     | 
    
         
             
            ```bash
         
     | 
| 
       362 
     | 
    
         
            -
            rspec --init  
     | 
| 
      
 408 
     | 
    
         
            +
            rspec --init ### if needed
         
     | 
| 
       363 
409 
     | 
    
         
             
            bundle exec rspec
         
     | 
| 
       364 
410 
     | 
    
         
             
            ```
         
     | 
| 
       365 
411 
     | 
    
         | 
| 
         @@ -373,7 +419,7 @@ Finished in 6.81 seconds (files took 0.40587 seconds to load) 
     | 
|
| 
       373 
419 
     | 
    
         
             
            53 examples, 0 failures
         
     | 
| 
       374 
420 
     | 
    
         
             
            ```
         
     | 
| 
       375 
421 
     | 
    
         | 
| 
       376 
     | 
    
         
            -
             
     | 
| 
      
 422 
     | 
    
         
            +
            ##### Test parameters
         
     | 
| 
       377 
423 
     | 
    
         
             
            The tests use the following environment parameters:
         
     | 
| 
       378 
424 
     | 
    
         
             
            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)
         
     | 
| 
       379 
425 
     | 
    
         
             
            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)
         
     |