blazeverify/blazeverify-ruby

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Emailable Ruby Library

[![Gem Version](https://badge.fury.io/rb/emailable.svg)](https://rubygems.org/gems/emailable)
![Build Status](https://github.com/emailable/emailable-ruby/actions/workflows/ci.yml/badge.svg)
[![Maintainability](https://api.codeclimate.com/v1/badges/e7eef54e491adec95e6d/maintainability)](https://codeclimate.com/github/emailable/emailable-ruby/maintainability)

This is the official ruby wrapper for the Emailable API.

It also includes an Active Record (Rails) validator to verify email attributes.

## Documentation

See the [Ruby API docs](https://emailable.com/docs/api/?ruby).

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'emailable'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install emailable

## Usage

The library needs to be configured with your account's API key which is
available in your [Emailable Dashboard](https://app.emailable.com/api). Set
`Emailable.api_key` to its value:

### Setup

```ruby
require 'emailable'

# set api key
Emailable.api_key = 'live_...'
```

### Verification

```ruby
# verify an email address
Emailable.verify('jarrett@emailable.com')
```

All supported parameters for the verify endpoint can be passed in as hash
arguments to the `verify` method.

#### Slow Email Server Handling

Some email servers are slow to respond. As a result, the timeout may be reached
before we are able to complete the verification process. If this happens, the
verification will continue in the background on our servers, and a
`Emailable::TimeoutError` will be raised. We recommend sleeping for at least
one second and trying your request again. Re-requesting the same verification
with the same options will not impact your credit allocation within a 5 minute
window. You can test this behavior using a test key and the special
email `slow@example.com`.

### Batch Verification

First, create an `Emailable::Batch` object. Then, call the `verify` method to
start the batch. All supported parameters for the batch verification endpoint
can be passed in as hash arguments to the `verify` method.

#### Start a batch

```ruby
emails = ['jarrett@emailable.com', 'support@emailable.com', ...]
batch = Emailable::Batch.new(emails)

# start verifying the batch
batch.verify

# you can optionally pass in a callback url that we'll POST to when the batch
# is complete.
batch.verify(url: 'https://emailable.com/')
```

#### Get the status / results of a batch

Calling `status` on a batch will return the status. It will contain the results
as well once complete. All supported parameters for the status endpoint can be
passed in as hash arguments to the `status` method.

```ruby
id = '5cfcbfdeede34200693c4319'
batch = Emailable::Batch.new(id)

# get status of batch
batch.status

# get the status of a batch, with partial results if the batch is incomplete
batch.status(partial: true)

# gets the results
batch.status.emails

# get the counts
batch.status.total_counts
batch.status.reason_counts

# returns true / false
batch.complete?
```

### Active Record Validator

Define a validator on an Active Record model for your email attribute(s).
It'll validate the attribute only when it's present and has changed.

#### Options

* `smtp`, `timeout`: Passed directly to API as options.
* `states`: An array of states you'd like to be considered valid.
* `free`, `role`, `disposable`, `accept_all`: If you'd like any of these to be valid.

```ruby
validates :email, email: {
  smtp: true, states: %i[deliverable risky unknown],
  free: true, role: true, disposable: false, accept_all: true, timeout: 3
}
```

#### Access Verification Result

You can define an `attr_accessor` with the following format to gain
access to the verification result.

```ruby
# [attribute_name]_verification_result
attr_accessor :email_verification_result
```

## Development

After checking out the repo, run `bin/setup` to install dependencies. Then, run
`rake test` to run the tests. You can also run `bin/console` for an interactive
prompt that will allow you to experiment.

## Contributing

Bug reports and pull requests are welcome on GitHub at
https://github.com/emailable/emailable-ruby.