emailable 4.1.0 → 4.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 103463e9ebcbb9490f1399c5086857764f8c9a32c19cc3e27261aa106936641f
4
- data.tar.gz: b8dd82907f958498904da4e2e6b373cbaf28cd2fe558d9ab38fb6e3af9f5522e
3
+ metadata.gz: 4ae844b48d6433e3ecf55f873f33ca5df1e879f483c86951ff8f08f38c8bbe8d
4
+ data.tar.gz: a8a52f0099c05dee80e7b4b7ef47f94f3c43fd5403ca21a8356a13a6ef49dadc
5
5
  SHA512:
6
- metadata.gz: f9cfd61ae22dbd5fff1dce1ae041c26754b1aadfd39127b5db5ad70b6cdf9531f7b40e973437b692a2cc90f5e008fe25917120a812061c2ae1bcf1984c80632a
7
- data.tar.gz: '08b1b8b0e33f2b6c29950b5cf5ed161a81cef24e272f72870c93056feec0283bde14c624ec11495bed9eb9d2660a19904fb3f492eefb6ee09e7d0f58837e6480'
6
+ metadata.gz: 9783c1e17821e6f49dfd534145c610dffb1b2f22db8b4af268b983544ee516afcb6f3347edcc41f9bdc97e010d5dcbd561acb21e8c1f07a34d32db3ad1efec23
7
+ data.tar.gz: ee6c2d7a11fe9071117355a958016b7cda3285cf981e03a31eae151be75a13cba1be560ec024928f4ef85ada642d1d576659c4fbf8c82851790494a923da29a8
@@ -0,0 +1,12 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ open-pull-requests-limit: 10
8
+ - package-ecosystem: github-actions
9
+ directory: "/"
10
+ schedule:
11
+ interval: daily
12
+ open-pull-requests-limit: 10
@@ -0,0 +1,42 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ 'master' ]
6
+ pull_request:
7
+
8
+ jobs:
9
+ tests:
10
+ name: Tests
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['2.7', '3.0', '3.1', '3.2', '3.3', '3.4']
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - name: Set up Ruby ${{ matrix.ruby-version }}
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby-version }}
22
+ bundler-cache: true
23
+
24
+ - name: Run tests
25
+ run: bundle exec rake
26
+
27
+ linters:
28
+ name: Linters
29
+ runs-on: ubuntu-latest
30
+
31
+ steps:
32
+ - name: Checkout code
33
+ uses: actions/checkout@v4
34
+
35
+ - name: Set up Ruby
36
+ uses: ruby/setup-ruby@v1
37
+ with:
38
+ bundler-cache: true
39
+
40
+ - name: RuboCop
41
+ run: bundle exec rubocop --parallel
42
+ if: always()
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ Gemfile.lock
data/.rubocop.yml ADDED
@@ -0,0 +1,2 @@
1
+ inherit_gem:
2
+ rubocop-cache-ventures: rubocop.yml
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.4
1
+ 3.4.4
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in emailable-ruby.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Emailable Ruby Library
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/emailable.svg)](https://rubygems.org/gems/emailable)
4
- [![Build Status](https://app.travis-ci.com/emailable/emailable-ruby.svg)](https://app.travis-ci.com/emailable/emailable-ruby)
4
+ ![Build Status](https://github.com/emailable/emailable-ruby/actions/workflows/ci.yml/badge.svg)
5
5
  [![Maintainability](https://api.codeclimate.com/v1/badges/e7eef54e491adec95e6d/maintainability)](https://codeclimate.com/github/emailable/emailable-ruby/maintainability)
6
6
 
7
7
  This is the official ruby wrapper for the Emailable API.
@@ -30,17 +30,26 @@ Or install it yourself as:
30
30
 
31
31
  ## Usage
32
32
 
33
- The library needs to be configured with your account's API key which is
34
- available in your [Emailable Dashboard](https://app.emailable.com/api). Set
35
- `Emailable.api_key` to its value:
33
+ ### Authentication
36
34
 
37
- ### Setup
35
+ The Emailable API requires either an API key or an access token for
36
+ authentication. API keys can be created and managed in the
37
+ [Emailable Dashboard](https://app.emailable.com/api).
38
+
39
+ An API key can be set globally for the Emailable client:
40
+
41
+ ```ruby
42
+ Emailable.api_key = 'your_api_key'
43
+ ```
44
+
45
+ Or, you can specify an `api_key` or an `access_token` with each request:
38
46
 
39
47
  ```ruby
40
- require 'emailable'
48
+ # set api_key at request time
49
+ Emailable.verify(api_key: 'your_api_key')
41
50
 
42
- # set api key
43
- Emailable.api_key = 'live_...'
51
+ # set access_token at request time
52
+ Emailable.verify(access_token: 'your_access_token')
44
53
  ```
45
54
 
46
55
  ### Verification
@@ -145,12 +154,6 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
145
154
  `rake test` to run the tests. You can also run `bin/console` for an interactive
146
155
  prompt that will allow you to experiment.
147
156
 
148
- To install this gem onto your local machine, run `bundle exec rake install`. To
149
- release a new version, update the version number in `version.rb`, and then run
150
- `bundle exec rake release`, which will create a git tag for the version, push
151
- git commits and tags, and push the `.gem` file to
152
- [rubygems.org](https://rubygems.org).
153
-
154
157
  ## Contributing
155
158
 
156
159
  Bug reports and pull requests are welcome on GitHub at
data/emailable.gemspec CHANGED
@@ -15,9 +15,9 @@ Gem::Specification.new do |s|
15
15
  s.email = 'support@emailable.com'
16
16
  s.license = 'MIT'
17
17
  s.metadata = {
18
- "bug_tracker_uri" => "https://github.com/emailable/emailable-ruby/issues",
19
- "documentation_uri" => "https://docs.emailable.com/?ruby",
20
- "source_code_uri" => "https://github.com/emailable/emailable-ruby"
18
+ 'bug_tracker_uri' => 'https://github.com/emailable/emailable-ruby/issues',
19
+ 'documentation_uri' => 'https://emailable.com/docs/api/?ruby',
20
+ 'source_code_uri' => 'https://github.com/emailable/emailable-ruby'
21
21
  }
22
22
 
23
23
  s.files = `git ls-files`.split("\n")
@@ -29,9 +29,9 @@ Gem::Specification.new do |s|
29
29
 
30
30
  s.add_development_dependency 'bundler'
31
31
  s.add_development_dependency 'rake', '~> 13.0'
32
- s.add_development_dependency 'pry'
33
- s.add_development_dependency 'awesome_print'
32
+ s.add_development_dependency 'amazing_print'
34
33
  s.add_development_dependency 'minitest', '~> 5.0'
35
34
  s.add_development_dependency 'minitest-reporters'
36
35
  s.add_development_dependency 'activemodel'
36
+ s.add_development_dependency 'rubocop-cache-ventures'
37
37
  end
@@ -27,7 +27,7 @@ module Emailable
27
27
  end
28
28
 
29
29
  def status(parameters = {})
30
- return nil unless @id
30
+ return unless @id
31
31
  return @status if @status
32
32
 
33
33
  parameters[:id] = @id
@@ -17,25 +17,31 @@ module Emailable
17
17
  end
18
18
 
19
19
  def request(method, endpoint, params = {})
20
- begin
21
- tries ||= 3
20
+ api_key = params.delete(:api_key)
21
+ access_token = params.delete(:access_token)
22
22
 
23
- uri = URI("#{@base_url}/#{endpoint}")
24
- params[:api_key] = Emailable.api_key
23
+ uri = URI("#{@base_url}/#{endpoint}")
24
+ headers = {
25
+ 'Authorization': "Bearer #{Emailable.api_key || api_key || access_token}",
26
+ 'Content-Type': 'application/json'
27
+ }
25
28
 
29
+ begin
30
+ tries ||= 3
26
31
  http_response =
27
32
  if method == :get
28
- uri.query = URI.encode_www_form(params)
29
- @connection.get(uri)
33
+ uri.query = URI.encode_www_form(params) unless params.empty?
34
+ request = Net::HTTP::Get.new(uri, headers)
35
+ @connection.request(request)
30
36
  elsif method == :post
31
- request = Net::HTTP::Post.new(uri, 'Content-Type': 'application/json')
37
+ request = Net::HTTP::Post.new(uri, headers)
32
38
  request.body = params.to_json
33
39
  @connection.request(request)
34
40
  end
35
41
 
36
42
  response = Response.new(http_response)
37
43
  rescue => e
38
- retry if (tries -= 1) > 0 && self.class.should_retry?(e, tries)
44
+ retry if (tries -= 1) > 0 && should_retry?(e, tries)
39
45
 
40
46
  raise e
41
47
  end
@@ -65,12 +71,12 @@ module Emailable
65
71
  if connection.respond_to?(:write_timeout=)
66
72
  connection.write_timeout = Emailable.write_timeout
67
73
  end
68
- connection.use_ssl = uri.scheme == "https"
74
+ connection.use_ssl = uri.scheme == 'https'
69
75
 
70
76
  connection
71
77
  end
72
78
 
73
- def self.should_retry?(error, num_retries)
79
+ def should_retry?(error, num_retries)
74
80
  return false if num_retries >= Emailable.max_network_retries
75
81
 
76
82
  case error
@@ -18,7 +18,7 @@ class EmailValidator < ActiveModel::EachValidator
18
18
  states = options.fetch(:states, %i(deliverable risky unknown))
19
19
  allowed_states = %i[deliverable undeliverable risky unknown]
20
20
  unless (states - allowed_states).empty?
21
- raise ArgumentError, ":states must be an array of symbols containing "\
21
+ raise ArgumentError, ':states must be an array of symbols containing '\
22
22
  "any or all of :#{allowed_states.join(', :')}"
23
23
  end
24
24
 
@@ -29,7 +29,7 @@ class EmailValidator < ActiveModel::EachValidator
29
29
 
30
30
  timeout = options.fetch(:timeout, 3)
31
31
  unless timeout.is_a?(Integer) && timeout > 1
32
- raise ArgumentError, ":timeout must be an Integer greater than 1"
32
+ raise ArgumentError, ':timeout must be an Integer greater than 1'
33
33
  end
34
34
 
35
35
  return if record.errors[attribute].present?
@@ -51,7 +51,12 @@ class EmailValidator < ActiveModel::EachValidator
51
51
  error ||= :disposable if ev.disposable? && !disposable
52
52
  error ||= :accept_all if ev.accept_all? && !accept_all
53
53
 
54
- record.errors.add(attribute, error) if error
54
+ if error
55
+ error_options = options.except(
56
+ :smtp, :states, :free, :role, :disposable, :accept_all, :timeout
57
+ )
58
+ record.errors.add(attribute, error, **error_options)
59
+ end
55
60
  rescue Emailable::Error
56
61
  # silence errors
57
62
  end
@@ -15,8 +15,8 @@ module Emailable
15
15
 
16
16
  alias_method :to_hash, :to_h
17
17
 
18
- def to_json
19
- JSON.generate(to_h)
18
+ def to_json(*args)
19
+ JSON.generate(to_h, *args)
20
20
  end
21
21
 
22
22
  def inspect
@@ -1,11 +1,11 @@
1
1
  module Emailable
2
2
  class Verification < APIResource
3
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
4
+ :email, :free, :mailbox_full, :mx_record, :no_reply, :reason,
5
+ :role, :score, :smtp_provider, :state, :tag, :user,
6
+ :first_name, :last_name, :full_name, :gender
7
7
 
8
- %w(accept_all disposable free role).each do |method|
8
+ %w(accept_all disposable free role mailbox_full no_reply).each do |method|
9
9
  define_method("#{method}?") do
10
10
  instance_variable_get "@#{method}"
11
11
  end
@@ -1,3 +1,3 @@
1
1
  module Emailable
2
- VERSION = '4.1.0'
2
+ VERSION = '4.2.0'
3
3
  end
data/lib/emailable.rb CHANGED
@@ -32,7 +32,7 @@ module Emailable
32
32
  parameters[:email] = email
33
33
 
34
34
  client = Emailable::Client.new
35
- response = client.request(:get, 'verify', parameters)
35
+ response = client.request(:post, 'verify', parameters)
36
36
 
37
37
  if response.status == 249
38
38
  raise Emailable::TimeoutError.new(response.body)
@@ -41,9 +41,9 @@ module Emailable
41
41
  end
42
42
  end
43
43
 
44
- def account
44
+ def account(parameters = {})
45
45
  client = Emailable::Client.new
46
- response = client.request(:get, 'account')
46
+ response = client.request(:get, 'account', parameters)
47
47
  Account.new(response.body)
48
48
  end
49
49
 
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ class AuthenticationTest < Minitest::Test
4
+
5
+ def setup
6
+ @api_key = 'test_7aff7fc0142c65f86a00'
7
+ @email = 'jarrett@emailable.com'
8
+ @emails = ['jarrett@emailable.com', 'support@emailable.com']
9
+ end
10
+
11
+ def test_global_api_key_authentication
12
+ Emailable.api_key = @api_key
13
+
14
+ refute_nil Emailable.verify(@email).domain
15
+ refute_nil Emailable.account.owner_email
16
+ refute_nil bid = Emailable::Batch.new(@emails).verify
17
+ refute_nil Emailable::Batch.new(bid).status.id
18
+ end
19
+
20
+ def test_request_time_api_key_authentication
21
+ refute_nil Emailable.verify(@email, api_key: @api_key).domain
22
+ refute_nil Emailable.account(api_key: @api_key).owner_email
23
+ refute_nil bid = Emailable::Batch.new(@emails).verify(api_key: @api_key)
24
+ refute_nil Emailable::Batch.new(bid).status(api_key: @api_key).id
25
+ end
26
+
27
+ end
@@ -1,86 +1,92 @@
1
- require 'active_model'
2
1
  require 'test_helper'
3
2
 
4
3
  class EmailValidatorTest < Minitest::Test
5
4
 
6
- def user_class(
7
- smtp: true, states: %i[deliverable risky unknown], free: true, role: true,
8
- accept_all: true, disposable: true, timeout: 3
9
- )
10
- Class.new do
11
- include ActiveModel::Model
12
- attr_accessor :email, :email_verification_result
13
-
14
- validates :email, presence: true, email: {
15
- smtp: smtp, states: states,
16
- free: free, role: role, disposable: disposable, accept_all: accept_all,
17
- timeout: timeout
18
- }
19
-
20
- def self.name
21
- 'TestClass'
22
- end
23
-
24
- # stub changes to always be true
25
- def changes
26
- { email: true }
27
- end
28
- end
29
- end
30
-
31
5
  def setup
32
6
  Emailable.api_key = 'test_7aff7fc0142c65f86a00'
33
- sleep(0.25)
34
7
  end
35
8
 
36
9
  def test_valid
37
- @user = user_class.new(email: 'deliverable@example.com')
10
+ valid_user = user_class.new(email: 'deliverable@example.com')
38
11
 
39
- assert @user.valid?
40
- assert @user.errors.empty?
12
+ assert valid_user.valid?
13
+ assert valid_user.errors.empty?
41
14
  end
42
15
 
43
16
  def test_invalid
44
- @user = user_class.new(email: 'undeliverable@example.com')
17
+ invalid_user = user_class.new(email: 'undeliverable@example.com')
45
18
 
46
- assert !@user.valid?
47
- assert @user.errors[:email].present?
19
+ refute invalid_user.valid?
20
+ assert invalid_user.errors[:email].present?
48
21
  end
49
22
 
50
23
  def test_verification_result
51
- @user = user_class.new(email: 'undeliverable@example.com')
52
- @user.valid?
24
+ invalid_user = user_class.new(email: 'undeliverable@example.com')
25
+ invalid_user.valid?
53
26
 
54
- refute_nil @user.email_verification_result
55
- assert @user.email_verification_result.state, :undeliverable
27
+ refute_nil invalid_user.email_verification_result
28
+ assert_equal 'undeliverable', invalid_user.email_verification_result.state
56
29
  end
57
30
 
58
- def test_boolean_options
31
+ def test_boolean_options_with_invalid_value
59
32
  %i[smtp free role disposable accept_all].each do |option|
60
- invalid_user = user_class(option => 'string').new
61
- valid_user = user_class.new
33
+ invalid_options = user_class(option => 'string').new
62
34
 
63
- assert !valid_user.valid?
64
- assert_raises(ArgumentError) { invalid_user.valid? }
35
+ assert_raises(ArgumentError) { invalid_options.valid? }
65
36
  end
66
37
  end
67
38
 
68
- def test_states_option
69
- invalid_user = user_class(states: %i[invalid_state]).new
70
- valid_user = user_class.new
39
+ def test_states_option_with_invalid_value
40
+ invalid_options = user_class(states: %i[invalid_state]).new
41
+
42
+ assert_raises(ArgumentError) { invalid_options.valid? }
43
+ end
44
+
45
+ def test_timeout_option_with_invalid_value
46
+ invalid_options1 = user_class(timeout: 'string').new
47
+ invalid_options2 = user_class(timeout: 1).new
48
+
49
+ assert_raises(ArgumentError) { invalid_options1.valid? }
50
+ assert_raises(ArgumentError) { invalid_options2.valid? }
51
+ end
52
+
53
+ def test_custom_option
54
+ message = 'invalid message'
55
+ valid_options = user_class(message: message, reportable: true).new(
56
+ email: 'undeliverable@example.com'
57
+ )
71
58
 
72
- assert !valid_user.valid?
73
- assert_raises(ArgumentError) { invalid_user.valid? }
59
+ refute valid_options.valid?
60
+ assert valid_options.errors[:email].present?
61
+ assert_equal message, valid_options.errors[:email].first
62
+ assert valid_options.errors.where(:email, reportable: true).present?
74
63
  end
75
64
 
76
- def test_timeout_option
77
- invalid_user1 = user_class(timeout: 'string').new
78
- invalid_user2 = user_class(timeout: 1).new
79
- valid_user = user_class.new
65
+ private
80
66
 
81
- assert !valid_user.valid?
82
- assert_raises(ArgumentError) { invalid_user1.valid? }
83
- assert_raises(ArgumentError) { invalid_user2.valid? }
67
+ def user_class(
68
+ smtp: true, states: %i[deliverable risky unknown], free: true, role: true,
69
+ accept_all: true, disposable: true, timeout: 3, **options
70
+ )
71
+ Class.new do
72
+ include ActiveModel::Model
73
+ attr_accessor :email, :email_verification_result
74
+
75
+ validates :email, presence: true, email: {
76
+ smtp: smtp, states: states,
77
+ free: free, role: role, disposable: disposable, accept_all: accept_all,
78
+ timeout: timeout
79
+ }.merge(options)
80
+
81
+ def self.name
82
+ 'TestClass'
83
+ end
84
+
85
+ # stub changes to always be true
86
+ def changes
87
+ { email: true }
88
+ end
89
+ end
84
90
  end
85
91
 
86
92
  end
@@ -4,12 +4,10 @@ module Emailable
4
4
  class BatchTest < Minitest::Test
5
5
 
6
6
  def setup
7
- sleep(1)
8
7
  Emailable.api_key = 'test_7aff7fc0142c65f86a00'
9
8
  @emails = ['jarrett@emailable.com', 'support@emailable.com']
10
9
  @batch = Emailable::Batch.new(@emails)
11
10
  @batch_id ||= @batch.verify
12
- sleep(1)
13
11
  end
14
12
 
15
13
  def test_start_batch
@@ -14,7 +14,7 @@ module Emailable
14
14
  def test_init
15
15
  assert_equal 'abc', @e.foo
16
16
  assert_equal 123, @e.bar
17
- assert_equal true, @e.baz
17
+ assert @e.baz
18
18
  end
19
19
 
20
20
  def test_to_h
@@ -4,45 +4,31 @@ class EmailableTest < Minitest::Test
4
4
 
5
5
  def setup
6
6
  Emailable.api_key = 'test_7aff7fc0142c65f86a00'
7
- @result ||= Emailable.verify('jarrett@emailable.com')
8
- sleep(0.25)
9
7
  end
10
8
 
11
9
  def test_verification
12
- refute_nil @result.domain
13
- refute_nil @result.email
14
- refute_nil @result.reason
15
- refute_nil @result.score
16
- refute_nil @result.state
17
- refute_nil @result.user
18
- refute_nil @result.duration
10
+ result = Emailable.verify('jarrett@emailable.com')
11
+ refute_nil result.domain
12
+ refute_nil result.email
13
+ refute_nil result.reason
14
+ refute_nil result.score
15
+ refute_nil result.state
16
+ refute_nil result.user
17
+ refute_nil result.duration
19
18
  end
20
19
 
21
20
  def test_verification_state
22
- assert %w(deliverable undeliverable risky unknown).include?(@result.state)
23
- end
24
-
25
- def test_verification_role
26
- result = Emailable.verify('support@emailable.com')
27
- assert result.role?
28
- refute @result.role?
29
- end
30
-
31
- def test_verification_did_you_mean
32
- result1 = Emailable.verify('jarrett@gmali.com')
33
- result2 = Emailable.verify('jarrett@gmail.com')
34
- assert result1.did_you_mean, 'jarrett@gmail.com'
35
- assert_nil result2.did_you_mean
21
+ result = Emailable.verify('jarrett@emailable.com')
22
+ assert %w(deliverable undeliverable risky unknown).include?(result.state)
36
23
  end
37
24
 
38
25
  def test_verification_tag
39
26
  result = Emailable.verify('jarrett+marketing@emailable.com')
40
- assert result.tag == 'marketing'
27
+ assert_equal 'marketing', result.tag
41
28
  end
42
29
 
43
30
  def test_account
44
31
  account = Emailable.account
45
-
46
32
  refute_nil account.owner_email
47
33
  refute_nil account.available_credits
48
34
  end
@@ -62,6 +48,30 @@ class EmailableTest < Minitest::Test
62
48
  end
63
49
  end
64
50
 
51
+ def test_accept_all?
52
+ assert Emailable.verify('accept-all@example.com').accept_all?
53
+ end
54
+
55
+ def test_disposable?
56
+ assert Emailable.verify('disposable@example.com').disposable?
57
+ end
58
+
59
+ def test_free?
60
+ assert Emailable.verify('free@example.com').free?
61
+ end
62
+
63
+ def test_role?
64
+ assert Emailable.verify('role@example.com').role?
65
+ end
66
+
67
+ def test_mailbox_full?
68
+ assert Emailable.verify('mailbox-full@example.com').mailbox_full?
69
+ end
70
+
71
+ def test_no_reply?
72
+ assert Emailable.verify('no-reply@example.com').no_reply?
73
+ end
74
+
65
75
  def test_slow_verification
66
76
  assert_raises(Emailable::TimeoutError) do
67
77
  Emailable.verify('slow@example.com')
data/test/test_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
+ require 'active_model'
1
2
  require 'emailable'
2
3
 
3
- require 'pry'
4
4
  require 'minitest/autorun'
5
5
  require 'minitest/reporters'
6
6
  Minitest::Reporters.use! [
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emailable
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emailable
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-03-27 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
@@ -39,7 +38,7 @@ dependencies:
39
38
  - !ruby/object:Gem::Version
40
39
  version: '13.0'
41
40
  - !ruby/object:Gem::Dependency
42
- name: pry
41
+ name: amazing_print
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - ">="
@@ -53,35 +52,35 @@ dependencies:
53
52
  - !ruby/object:Gem::Version
54
53
  version: '0'
55
54
  - !ruby/object:Gem::Dependency
56
- name: awesome_print
55
+ name: minitest
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
- - - ">="
58
+ - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: '0'
60
+ version: '5.0'
62
61
  type: :development
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
- - - ">="
65
+ - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: '0'
67
+ version: '5.0'
69
68
  - !ruby/object:Gem::Dependency
70
- name: minitest
69
+ name: minitest-reporters
71
70
  requirement: !ruby/object:Gem::Requirement
72
71
  requirements:
73
- - - "~>"
72
+ - - ">="
74
73
  - !ruby/object:Gem::Version
75
- version: '5.0'
74
+ version: '0'
76
75
  type: :development
77
76
  prerelease: false
78
77
  version_requirements: !ruby/object:Gem::Requirement
79
78
  requirements:
80
- - - "~>"
79
+ - - ">="
81
80
  - !ruby/object:Gem::Version
82
- version: '5.0'
81
+ version: '0'
83
82
  - !ruby/object:Gem::Dependency
84
- name: minitest-reporters
83
+ name: activemodel
85
84
  requirement: !ruby/object:Gem::Requirement
86
85
  requirements:
87
86
  - - ">="
@@ -95,7 +94,7 @@ dependencies:
95
94
  - !ruby/object:Gem::Version
96
95
  version: '0'
97
96
  - !ruby/object:Gem::Dependency
98
- name: activemodel
97
+ name: rubocop-cache-ventures
99
98
  requirement: !ruby/object:Gem::Requirement
100
99
  requirements:
101
100
  - - ">="
@@ -117,12 +116,13 @@ executables:
117
116
  extensions: []
118
117
  extra_rdoc_files: []
119
118
  files:
119
+ - ".github/dependabot.yml"
120
+ - ".github/workflows/ci.yml"
120
121
  - ".gitignore"
122
+ - ".rubocop.yml"
121
123
  - ".ruby-gemset"
122
124
  - ".ruby-version"
123
- - ".travis.yml"
124
125
  - Gemfile
125
- - Gemfile.lock
126
126
  - LICENSE.txt
127
127
  - README.md
128
128
  - Rakefile
@@ -141,6 +141,7 @@ files:
141
141
  - lib/emailable/resources/verification.rb
142
142
  - lib/emailable/response.rb
143
143
  - lib/emailable/version.rb
144
+ - test/authentication_test.rb
144
145
  - test/email_validator_test.rb
145
146
  - test/emailable/batch_test.rb
146
147
  - test/emailable/resources/api_resource_test.rb
@@ -151,9 +152,8 @@ licenses:
151
152
  - MIT
152
153
  metadata:
153
154
  bug_tracker_uri: https://github.com/emailable/emailable-ruby/issues
154
- documentation_uri: https://docs.emailable.com/?ruby
155
+ documentation_uri: https://emailable.com/docs/api/?ruby
155
156
  source_code_uri: https://github.com/emailable/emailable-ruby
156
- post_install_message:
157
157
  rdoc_options: []
158
158
  require_paths:
159
159
  - lib
@@ -168,11 +168,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
168
  - !ruby/object:Gem::Version
169
169
  version: '0'
170
170
  requirements: []
171
- rubygems_version: 3.1.6
172
- signing_key:
171
+ rubygems_version: 3.6.7
173
172
  specification_version: 4
174
173
  summary: Ruby bindings for the Emailable API
175
174
  test_files:
175
+ - test/authentication_test.rb
176
176
  - test/email_validator_test.rb
177
177
  - test/emailable/batch_test.rb
178
178
  - test/emailable/resources/api_resource_test.rb
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.7.4
7
- before_install: gem install bundler -v 2.2.15
data/Gemfile.lock DELETED
@@ -1,55 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- emailable (4.0.1)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- activemodel (6.0.3.4)
10
- activesupport (= 6.0.3.4)
11
- activesupport (6.0.3.4)
12
- concurrent-ruby (~> 1.0, >= 1.0.2)
13
- i18n (>= 0.7, < 2)
14
- minitest (~> 5.1)
15
- tzinfo (~> 1.1)
16
- zeitwerk (~> 2.2, >= 2.2.2)
17
- ansi (1.5.0)
18
- awesome_print (1.8.0)
19
- builder (3.2.3)
20
- coderay (1.1.3)
21
- concurrent-ruby (1.1.7)
22
- i18n (1.8.5)
23
- concurrent-ruby (~> 1.0)
24
- method_source (1.0.0)
25
- minitest (5.11.3)
26
- minitest-reporters (1.3.6)
27
- ansi
28
- builder
29
- minitest (>= 5.0)
30
- ruby-progressbar
31
- pry (0.14.1)
32
- coderay (~> 1.1)
33
- method_source (~> 1.0)
34
- rake (13.0.1)
35
- ruby-progressbar (1.10.1)
36
- thread_safe (0.3.6)
37
- tzinfo (1.2.10)
38
- thread_safe (~> 0.1)
39
- zeitwerk (2.4.1)
40
-
41
- PLATFORMS
42
- ruby
43
-
44
- DEPENDENCIES
45
- activemodel
46
- awesome_print
47
- bundler
48
- emailable!
49
- minitest (~> 5.0)
50
- minitest-reporters
51
- pry
52
- rake (~> 13.0)
53
-
54
- BUNDLED WITH
55
- 2.1.4