blazeverify 1.0.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +27 -9
- data/README.md +38 -12
- data/blazeverify.gemspec +3 -2
- data/config/locales/en.yml +10 -0
- data/lib/blazeverify.rb +26 -1
- data/lib/blazeverify/client.rb +0 -17
- data/lib/blazeverify/email_validator.rb +70 -0
- data/lib/blazeverify/resources/verification.rb +4 -2
- data/lib/blazeverify/version.rb +1 -1
- data/test/blazeverify_test.rb +22 -1
- data/test/email_validator_test.rb +85 -0
- data/test/test_helper.rb +2 -0
- metadata +30 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85252fc6012c171412400563d082437bef82d71bc0e950a0acc44ca2d6ef53c9
|
4
|
+
data.tar.gz: 8b1975eba455e692aaff0cb033b6b5abd02a6fccfbffc0269981f3624c823670
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 887908fc8069d9ca5bd499f858de54c2b9de5b22f9f034baad6db789f547f70e022f4813644eb6456f0b46d6b6415388befdf8e545b69a52209d2a0b6c720ed3
|
7
|
+
data.tar.gz: ab93b482db07925f20d3222445eb8bf63ad618279002d04c292eb5244cba392e527f92e37ca16a5fafe74b6a9ced6beb866e26426423d68543d6a5ade8a1c051
|
data/Gemfile.lock
CHANGED
@@ -1,23 +1,35 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
blazeverify (1.
|
5
|
-
faraday
|
4
|
+
blazeverify (1.3.2)
|
5
|
+
faraday
|
6
6
|
faraday_middleware
|
7
7
|
net-http-persistent
|
8
8
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
+
activemodel (6.0.3.4)
|
13
|
+
activesupport (= 6.0.3.4)
|
14
|
+
activesupport (6.0.3.4)
|
15
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
16
|
+
i18n (>= 0.7, < 2)
|
17
|
+
minitest (~> 5.1)
|
18
|
+
tzinfo (~> 1.1)
|
19
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
12
20
|
ansi (1.5.0)
|
13
21
|
awesome_print (1.8.0)
|
14
22
|
builder (3.2.3)
|
15
23
|
coderay (1.1.2)
|
16
|
-
|
17
|
-
|
24
|
+
concurrent-ruby (1.1.7)
|
25
|
+
connection_pool (2.2.3)
|
26
|
+
faraday (1.1.0)
|
18
27
|
multipart-post (>= 1.2, < 3)
|
19
|
-
|
20
|
-
|
28
|
+
ruby2_keywords
|
29
|
+
faraday_middleware (1.0.0)
|
30
|
+
faraday (~> 1.0)
|
31
|
+
i18n (1.8.5)
|
32
|
+
concurrent-ruby (~> 1.0)
|
21
33
|
method_source (0.9.2)
|
22
34
|
minitest (5.11.3)
|
23
35
|
minitest-reporters (1.3.6)
|
@@ -26,25 +38,31 @@ GEM
|
|
26
38
|
minitest (>= 5.0)
|
27
39
|
ruby-progressbar
|
28
40
|
multipart-post (2.1.1)
|
29
|
-
net-http-persistent (
|
41
|
+
net-http-persistent (4.0.0)
|
30
42
|
connection_pool (~> 2.2)
|
31
43
|
pry (0.12.2)
|
32
44
|
coderay (~> 1.1.0)
|
33
45
|
method_source (~> 0.9.0)
|
34
|
-
rake (
|
46
|
+
rake (13.0.1)
|
35
47
|
ruby-progressbar (1.10.1)
|
48
|
+
ruby2_keywords (0.0.2)
|
49
|
+
thread_safe (0.3.6)
|
50
|
+
tzinfo (1.2.8)
|
51
|
+
thread_safe (~> 0.1)
|
52
|
+
zeitwerk (2.4.1)
|
36
53
|
|
37
54
|
PLATFORMS
|
38
55
|
ruby
|
39
56
|
|
40
57
|
DEPENDENCIES
|
58
|
+
activemodel
|
41
59
|
awesome_print
|
42
60
|
blazeverify!
|
43
61
|
bundler
|
44
62
|
minitest (~> 5.0)
|
45
63
|
minitest-reporters
|
46
64
|
pry
|
47
|
-
rake (~>
|
65
|
+
rake (~> 13.0)
|
48
66
|
|
49
67
|
BUNDLED WITH
|
50
68
|
1.17.3
|
data/README.md
CHANGED
@@ -5,9 +5,11 @@
|
|
5
5
|
|
6
6
|
This is the official ruby wrapper for the Blaze Verify API.
|
7
7
|
|
8
|
+
It also includes an Active Record (Rails) validator to verify email attributes.
|
9
|
+
|
8
10
|
## Documentation
|
9
11
|
|
10
|
-
See the [Ruby API docs](https://blazeverify.com/docs/api
|
12
|
+
See the [Ruby API docs](https://blazeverify.com/docs/api/?ruby).
|
11
13
|
|
12
14
|
## Installation
|
13
15
|
|
@@ -47,18 +49,14 @@ BlazeVerify.verify('jarrett@blazeverify.com')
|
|
47
49
|
|
48
50
|
#### Slow Email Server Handling
|
49
51
|
|
50
|
-
Some email servers are slow to respond. As a result the timeout may be reached
|
52
|
+
Some email servers are slow to respond. As a result, the timeout may be reached
|
51
53
|
before we are able to complete the verification process. If this happens, the
|
52
|
-
verification will continue in the background on our servers
|
53
|
-
|
54
|
-
|
55
|
-
allocation within a 5 minute
|
56
|
-
|
57
|
-
|
58
|
-
{
|
59
|
-
"message" => "Your request is taking longer than normal. Please send your request again."
|
60
|
-
}
|
61
|
-
```
|
54
|
+
verification will continue in the background on our servers, and a
|
55
|
+
`BlazeVerify::TimeoutError` will be raised. We recommend sleeping for at least
|
56
|
+
one second and trying your request again. Re-requesting the same verification
|
57
|
+
with the same options will not impact your credit allocation within a 5 minute
|
58
|
+
window. You can test this behavior using a test key and the special
|
59
|
+
email `slow@example.com`.
|
62
60
|
|
63
61
|
### Batch Verification
|
64
62
|
|
@@ -98,6 +96,34 @@ batch.status.reason_counts
|
|
98
96
|
batch.complete?
|
99
97
|
```
|
100
98
|
|
99
|
+
### Active Record Validator
|
100
|
+
|
101
|
+
Define a validator on an Active Record model for your email attribute(s).
|
102
|
+
It'll validate the attribute only when it's present and has changed.
|
103
|
+
|
104
|
+
#### Options
|
105
|
+
|
106
|
+
* `smtp`, `timeout`: Passed directly to API as options.
|
107
|
+
* `states`: An array of states you'd like to be considered valid.
|
108
|
+
* `free`, `role`, `disposable`, `accept_all`: If you'd like any of these to be valid.
|
109
|
+
|
110
|
+
```ruby
|
111
|
+
validates :email, email: {
|
112
|
+
smtp: true, states: %i[deliverable risky unknown],
|
113
|
+
free: true, role: true, disposable: false, accept_all: true, timeout: 3
|
114
|
+
}
|
115
|
+
```
|
116
|
+
|
117
|
+
#### Access Verification Result
|
118
|
+
|
119
|
+
You can define an `attr_accessor` with the following format to gain
|
120
|
+
access to the verification result.
|
121
|
+
|
122
|
+
```ruby
|
123
|
+
# [attribute_name]_verification_result
|
124
|
+
attr_accessor :email_verification_result
|
125
|
+
```
|
126
|
+
|
101
127
|
## Development
|
102
128
|
|
103
129
|
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.
|
data/blazeverify.gemspec
CHANGED
@@ -27,13 +27,14 @@ Gem::Specification.new do |s|
|
|
27
27
|
end
|
28
28
|
s.require_paths = ['lib']
|
29
29
|
|
30
|
-
s.add_dependency 'faraday'
|
30
|
+
s.add_dependency 'faraday'
|
31
31
|
s.add_dependency 'faraday_middleware'
|
32
32
|
s.add_dependency 'net-http-persistent'
|
33
33
|
s.add_development_dependency 'bundler'
|
34
|
-
s.add_development_dependency 'rake', '~>
|
34
|
+
s.add_development_dependency 'rake', '~> 13.0'
|
35
35
|
s.add_development_dependency 'pry'
|
36
36
|
s.add_development_dependency 'awesome_print'
|
37
37
|
s.add_development_dependency 'minitest', '~> 5.0'
|
38
38
|
s.add_development_dependency 'minitest-reporters'
|
39
|
+
s.add_development_dependency 'activemodel'
|
39
40
|
end
|
data/lib/blazeverify.rb
CHANGED
@@ -7,6 +7,10 @@ require 'blazeverify/resources/api_resource'
|
|
7
7
|
require 'blazeverify/resources/account'
|
8
8
|
require 'blazeverify/resources/batch_status'
|
9
9
|
require 'blazeverify/resources/verification'
|
10
|
+
if defined?(ActiveModel)
|
11
|
+
require 'blazeverify/email_validator'
|
12
|
+
I18n.load_path += Dir.glob(File.expand_path('../../config/locales/**/*', __FILE__))
|
13
|
+
end
|
10
14
|
|
11
15
|
module BlazeVerify
|
12
16
|
@max_network_retries = 1
|
@@ -26,7 +30,9 @@ module BlazeVerify
|
|
26
30
|
response = client.request(:get, 'verify', opts)
|
27
31
|
|
28
32
|
if response.status == 249
|
29
|
-
|
33
|
+
raise BlazeVerify::TimeoutError.new(
|
34
|
+
code: response.status, message: response.body
|
35
|
+
)
|
30
36
|
else
|
31
37
|
Verification.new(response.body)
|
32
38
|
end
|
@@ -37,4 +43,23 @@ module BlazeVerify
|
|
37
43
|
response = client.request(:get, 'account')
|
38
44
|
Account.new(response.body)
|
39
45
|
end
|
46
|
+
|
47
|
+
|
48
|
+
class Error < StandardError
|
49
|
+
attr_accessor :code, :message
|
50
|
+
|
51
|
+
def initialize(code: nil, message: nil)
|
52
|
+
@code = code
|
53
|
+
@message = message
|
54
|
+
end
|
55
|
+
end
|
56
|
+
class BadRequestError < Error; end
|
57
|
+
class UnauthorizedError < Error; end
|
58
|
+
class PaymentRequiredError < Error; end
|
59
|
+
class ForbiddenError < Error; end
|
60
|
+
class NotFoundError < Error; end
|
61
|
+
class TooManyRequestsError < Error; end
|
62
|
+
class InternalServerError < Error; end
|
63
|
+
class ServiceUnavailableError < Error; end
|
64
|
+
class TimeoutError < Error; end
|
40
65
|
end
|
data/lib/blazeverify/client.rb
CHANGED
@@ -67,21 +67,4 @@ module BlazeVerify
|
|
67
67
|
false
|
68
68
|
end
|
69
69
|
end
|
70
|
-
|
71
|
-
class Error < StandardError
|
72
|
-
attr_accessor :code, :message
|
73
|
-
|
74
|
-
def initialize(code: nil, message: nil)
|
75
|
-
@code = code
|
76
|
-
@message = message
|
77
|
-
end
|
78
|
-
end
|
79
|
-
class BadRequestError < Error; end
|
80
|
-
class UnauthorizedError < Error; end
|
81
|
-
class PaymentRequiredError < Error; end
|
82
|
-
class ForbiddenError < Error; end
|
83
|
-
class NotFoundError < Error; end
|
84
|
-
class TooManyRequestsError < Error; end
|
85
|
-
class InternalServerError < Error; end
|
86
|
-
class ServiceUnavailableError < Error; end
|
87
70
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# ActiveRecord validator for validating an email address with Blaze Verify
|
2
|
+
#
|
3
|
+
# Usage:
|
4
|
+
# validates :email, presence: true, email: {
|
5
|
+
# smtp: true, states: %i[deliverable risky unknown],
|
6
|
+
# free: true, role: true, disposable: false, accept_all: true,
|
7
|
+
# timeout: 3
|
8
|
+
# }
|
9
|
+
#
|
10
|
+
# Define an attr_accessor to access verification results.
|
11
|
+
# attr_accessor :email_verification_result
|
12
|
+
#
|
13
|
+
class EmailValidator < ActiveModel::EachValidator
|
14
|
+
|
15
|
+
def validate_each(record, attribute, value)
|
16
|
+
smtp = boolean_option_or_raise_error(:smtp, true)
|
17
|
+
|
18
|
+
states = options.fetch(:states, %i(deliverable risky unknown))
|
19
|
+
allowed_states = %i[deliverable undeliverable risky unknown]
|
20
|
+
unless (states - allowed_states).empty?
|
21
|
+
raise ArgumentError, ":states must be an array of symbols containing "\
|
22
|
+
"any or all of :#{allowed_states.join(', :')}"
|
23
|
+
end
|
24
|
+
|
25
|
+
free = boolean_option_or_raise_error(:free, true)
|
26
|
+
role = boolean_option_or_raise_error(:role, true)
|
27
|
+
disposable = boolean_option_or_raise_error(:disposable, false)
|
28
|
+
accept_all = boolean_option_or_raise_error(:accept_all, true)
|
29
|
+
|
30
|
+
timeout = options.fetch(:timeout, 3)
|
31
|
+
unless timeout.is_a?(Integer) && timeout > 1
|
32
|
+
raise ArgumentError, ":timeout must be an Integer greater than 1"
|
33
|
+
end
|
34
|
+
|
35
|
+
return if record.errors[attribute].present?
|
36
|
+
return unless value.present?
|
37
|
+
return unless record.changes[attribute].present?
|
38
|
+
|
39
|
+
api_options = { timeout: timeout, smtp: smtp }
|
40
|
+
api_options[:accept_all] = true unless accept_all
|
41
|
+
ev = BlazeVerify.verify(value, api_options)
|
42
|
+
|
43
|
+
result_accessor = "#{attribute}_verification_result"
|
44
|
+
if record.respond_to?(result_accessor)
|
45
|
+
record.instance_variable_set("@#{result_accessor}", ev)
|
46
|
+
end
|
47
|
+
|
48
|
+
error ||= ev.state.to_sym unless states.include?(ev.state.to_sym)
|
49
|
+
error ||= :free if ev.free? && !free
|
50
|
+
error ||= :role if ev.role? && !role
|
51
|
+
error ||= :disposable if ev.disposable? && !disposable
|
52
|
+
error ||= :accept_all if ev.accept_all? && !accept_all
|
53
|
+
|
54
|
+
record.errors.add(attribute, error) if error
|
55
|
+
rescue BlazeVerify::Error
|
56
|
+
# silence errors
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def boolean_option_or_raise_error(name, default)
|
62
|
+
option = options.fetch(name, default)
|
63
|
+
unless [true, false].include?(option)
|
64
|
+
raise ArgumentError, ":#{name} must by a Boolean"
|
65
|
+
end
|
66
|
+
|
67
|
+
option
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
module BlazeVerify
|
2
2
|
class Verification < APIResource
|
3
|
-
attr_accessor :accept_all, :did_you_mean, :disposable, :domain, :
|
4
|
-
:
|
3
|
+
attr_accessor :accept_all, :did_you_mean, :disposable, :domain, :duration,
|
4
|
+
:email, :free, :mx_record, :reason, :role, :score,
|
5
|
+
:smtp_provider, :state, :tag, :user, :first_name, :last_name,
|
6
|
+
:full_name, :gender
|
5
7
|
|
6
8
|
%w(accept_all disposable free role).each do |method|
|
7
9
|
define_method("#{method}?") do
|
data/lib/blazeverify/version.rb
CHANGED
data/test/blazeverify_test.rb
CHANGED
@@ -15,6 +15,7 @@ class BlazeVerifyTest < Minitest::Test
|
|
15
15
|
refute_nil @result.score
|
16
16
|
refute_nil @result.state
|
17
17
|
refute_nil @result.user
|
18
|
+
refute_nil @result.duration
|
18
19
|
end
|
19
20
|
|
20
21
|
def test_verification_state
|
@@ -39,11 +40,31 @@ class BlazeVerifyTest < Minitest::Test
|
|
39
40
|
end
|
40
41
|
|
41
42
|
def test_account
|
42
|
-
BlazeVerify.api_key = 'test_7aff7fc0142c65f86a00'
|
43
43
|
account = BlazeVerify.account
|
44
44
|
|
45
45
|
refute_nil account.owner_email
|
46
46
|
refute_nil account.available_credits
|
47
47
|
end
|
48
48
|
|
49
|
+
def test_name_and_gender
|
50
|
+
result = BlazeVerify.verify('johndoe@blazeverify.com')
|
51
|
+
if %w(deliverable risky unknown).include?(result.state)
|
52
|
+
assert result.first_name, 'John'
|
53
|
+
assert result.last_name, 'Doe'
|
54
|
+
assert result.first_name, 'John Doe'
|
55
|
+
assert result.gender, 'male'
|
56
|
+
else
|
57
|
+
assert_nil result.first_name
|
58
|
+
assert_nil result.last_name
|
59
|
+
assert_nil result.full_name
|
60
|
+
assert_nil result.gender
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_slow_verification
|
65
|
+
assert_raises(BlazeVerify::TimeoutError) do
|
66
|
+
BlazeVerify.verify('slow@example.com')
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
49
70
|
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class EmailValidatorTest < Minitest::Test
|
4
|
+
|
5
|
+
def user_class(
|
6
|
+
smtp: true, states: %i[deliverable risky unknown], free: true, role: true,
|
7
|
+
accept_all: true, disposable: true, timeout: 3
|
8
|
+
)
|
9
|
+
Class.new do
|
10
|
+
include ActiveModel::Model
|
11
|
+
attr_accessor :email, :email_verification_result
|
12
|
+
|
13
|
+
validates :email, presence: true, email: {
|
14
|
+
smtp: smtp, states: states,
|
15
|
+
free: free, role: role, disposable: disposable, accept_all: accept_all,
|
16
|
+
timeout: timeout
|
17
|
+
}
|
18
|
+
|
19
|
+
def self.name
|
20
|
+
'TestClass'
|
21
|
+
end
|
22
|
+
|
23
|
+
# stub changes to always be true
|
24
|
+
def changes
|
25
|
+
{ email: true }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def setup
|
31
|
+
BlazeVerify.api_key = 'test_7aff7fc0142c65f86a00'
|
32
|
+
sleep(0.25)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_valid
|
36
|
+
@user = user_class.new(email: 'deliverable@example.com')
|
37
|
+
|
38
|
+
assert @user.valid?
|
39
|
+
assert @user.errors.empty?
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_invalid
|
43
|
+
@user = user_class.new(email: 'undeliverable@example.com')
|
44
|
+
|
45
|
+
assert !@user.valid?
|
46
|
+
assert @user.errors[:email].present?
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_verification_result
|
50
|
+
@user = user_class.new(email: 'undeliverable@example.com')
|
51
|
+
@user.valid?
|
52
|
+
|
53
|
+
refute_nil @user.email_verification_result
|
54
|
+
assert @user.email_verification_result.state, :undeliverable
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_boolean_options
|
58
|
+
%i[smtp free role disposable accept_all].each do |option|
|
59
|
+
invalid_user = user_class(option => 'string').new
|
60
|
+
valid_user = user_class.new
|
61
|
+
|
62
|
+
assert !valid_user.valid?
|
63
|
+
assert_raises(ArgumentError) { invalid_user.valid? }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_states_option
|
68
|
+
invalid_user = user_class(states: %i[invalid_state]).new
|
69
|
+
valid_user = user_class.new
|
70
|
+
|
71
|
+
assert !valid_user.valid?
|
72
|
+
assert_raises(ArgumentError) { invalid_user.valid? }
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_timeout_option
|
76
|
+
invalid_user1 = user_class(timeout: 'string').new
|
77
|
+
invalid_user2 = user_class(timeout: 1).new
|
78
|
+
valid_user = user_class.new
|
79
|
+
|
80
|
+
assert !valid_user.valid?
|
81
|
+
assert_raises(ArgumentError) { invalid_user1.valid? }
|
82
|
+
assert_raises(ArgumentError) { invalid_user2.valid? }
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blazeverify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Blaze Verify
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faraday_middleware
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '13.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '13.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: activemodel
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
139
153
|
description: Email Verification that’s astonishingly easy and low-cost. See https://blazeverify.com
|
140
154
|
for details.
|
141
155
|
email: support@blazeverify.com
|
@@ -157,9 +171,11 @@ files:
|
|
157
171
|
- bin/console
|
158
172
|
- bin/setup
|
159
173
|
- blazeverify.gemspec
|
174
|
+
- config/locales/en.yml
|
160
175
|
- lib/blazeverify.rb
|
161
176
|
- lib/blazeverify/batch.rb
|
162
177
|
- lib/blazeverify/client.rb
|
178
|
+
- lib/blazeverify/email_validator.rb
|
163
179
|
- lib/blazeverify/resources/account.rb
|
164
180
|
- lib/blazeverify/resources/api_resource.rb
|
165
181
|
- lib/blazeverify/resources/batch_status.rb
|
@@ -167,6 +183,7 @@ files:
|
|
167
183
|
- lib/blazeverify/version.rb
|
168
184
|
- test/blazeverify/batch_test.rb
|
169
185
|
- test/blazeverify_test.rb
|
186
|
+
- test/email_validator_test.rb
|
170
187
|
- test/test_helper.rb
|
171
188
|
homepage: https://blazeverify.com
|
172
189
|
licenses:
|
@@ -175,7 +192,7 @@ metadata:
|
|
175
192
|
bug_tracker_uri: https://github.com/blazeverify/blazeverify-ruby/issues
|
176
193
|
documentation_uri: https://docs.blazeverify.com/?ruby
|
177
194
|
source_code_uri: https://github.com/blazeverify/blazeverify-ruby
|
178
|
-
post_install_message:
|
195
|
+
post_install_message:
|
179
196
|
rdoc_options: []
|
180
197
|
require_paths:
|
181
198
|
- lib
|
@@ -190,11 +207,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
207
|
- !ruby/object:Gem::Version
|
191
208
|
version: '0'
|
192
209
|
requirements: []
|
193
|
-
rubygems_version: 3.0.
|
194
|
-
signing_key:
|
210
|
+
rubygems_version: 3.0.8
|
211
|
+
signing_key:
|
195
212
|
specification_version: 4
|
196
213
|
summary: Ruby bindings for the Blaze Verify API
|
197
214
|
test_files:
|
198
215
|
- test/blazeverify/batch_test.rb
|
199
216
|
- test/blazeverify_test.rb
|
217
|
+
- test/email_validator_test.rb
|
200
218
|
- test/test_helper.rb
|