emailable 3.1.0 → 3.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/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/bin/console +4 -4
- data/lib/emailable/client.rb +11 -16
- data/lib/emailable/errors.rb +12 -0
- data/lib/emailable/resources/api_resource.rb +14 -6
- data/lib/emailable/resources/verification.rb +5 -0
- data/lib/emailable/version.rb +1 -1
- data/lib/emailable.rb +5 -21
- data/test/email_validator_test.rb +1 -0
- data/test/emailable/resources/api_resource_test.rb +49 -0
- data/test/test_helper.rb +0 -2
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90f1d586f58f97cf11f78a6dac64fa169e9ff0d1a2902a4f5df86a32f9d16dae
|
4
|
+
data.tar.gz: 20e10632676d8374b41048c9324fe879c5da2cc0841a71ae9bf920ea752abc58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 644ea041fc96995db1c0121be0b494f1cbea6df42dbbf691afebce236ce567a5db4ee87d34bf222dc26e244a4624777ca8a08a4df899a980050902403a31a7e0
|
7
|
+
data.tar.gz: 54b5b43f725562bcae4a38385b70a9ff61e74c4fbe74200b288d1112ed7b640eea2326c618ea8f1adf815f5aad42ef69982029f70f7246bbf55746bfe752435f
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Emailable Ruby Library
|
2
2
|
|
3
|
-
[](https://travis-ci.com/emailable/emailable-ruby)
|
3
|
+
[](https://app.travis-ci.com/emailable/emailable-ruby)
|
4
4
|
[](https://codeclimate.com/github/emailable/emailable-ruby/maintainability)
|
5
5
|
|
6
6
|
This is the official ruby wrapper for the Emailable API.
|
data/bin/console
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'emailable'
|
5
5
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
8
|
|
9
9
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require
|
10
|
+
# require 'pry'
|
11
11
|
# Pry.start
|
12
12
|
|
13
|
-
require
|
13
|
+
require 'irb'
|
14
14
|
IRB.start(__FILE__)
|
data/lib/emailable/client.rb
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
module Emailable
|
2
2
|
class Client
|
3
|
+
ERRORS = {
|
4
|
+
400 => BadRequestError,
|
5
|
+
401 => UnauthorizedError,
|
6
|
+
402 => PaymentRequiredError,
|
7
|
+
403 => ForbiddenError,
|
8
|
+
404 => NotFoundError,
|
9
|
+
429 => TooManyRequestsError,
|
10
|
+
500 => InternalServerError,
|
11
|
+
503 => ServiceUnavailableError
|
12
|
+
}.freeze
|
3
13
|
|
4
14
|
def initialize
|
5
15
|
@base_url = 'https://api.emailable.com/v1'
|
@@ -33,22 +43,7 @@ module Emailable
|
|
33
43
|
status = response.status
|
34
44
|
return response if status.between?(200, 299)
|
35
45
|
|
36
|
-
|
37
|
-
message: response.body['message'],
|
38
|
-
code: status
|
39
|
-
}
|
40
|
-
error_map = {
|
41
|
-
'400' => BadRequestError,
|
42
|
-
'401' => UnauthorizedError,
|
43
|
-
'402' => PaymentRequiredError,
|
44
|
-
'403' => ForbiddenError,
|
45
|
-
'404' => NotFoundError,
|
46
|
-
'429' => TooManyRequestsError,
|
47
|
-
'500' => InternalServerError,
|
48
|
-
'503' => ServiceUnavailableError
|
49
|
-
}
|
50
|
-
|
51
|
-
raise error_map[status.to_s].new(error_attributes)
|
46
|
+
raise ERRORS[status].new(response.body['message'])
|
52
47
|
end
|
53
48
|
|
54
49
|
private
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Emailable
|
2
|
+
class Error < StandardError; end
|
3
|
+
class BadRequestError < Error; end
|
4
|
+
class UnauthorizedError < Error; end
|
5
|
+
class PaymentRequiredError < Error; end
|
6
|
+
class ForbiddenError < Error; end
|
7
|
+
class NotFoundError < Error; end
|
8
|
+
class TooManyRequestsError < Error; end
|
9
|
+
class InternalServerError < Error; end
|
10
|
+
class ServiceUnavailableError < Error; end
|
11
|
+
class TimeoutError < Error; end
|
12
|
+
end
|
@@ -7,13 +7,21 @@ module Emailable
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
11
|
-
|
12
|
-
[e.to_s.delete('@'), instance_variable_get(e)]
|
10
|
+
def to_h
|
11
|
+
instance_variables.map do |e|
|
12
|
+
[e.to_s.delete('@').to_sym, instance_variable_get(e)]
|
13
13
|
end.to_h
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
end
|
15
|
+
|
16
|
+
alias_method :to_hash, :to_h
|
17
|
+
|
18
|
+
def to_json
|
19
|
+
JSON.generate(to_h)
|
20
|
+
end
|
21
|
+
|
22
|
+
def inspect
|
23
|
+
"#<#{self.class}:0x#{(object_id << 1).to_s(16)}> JSON: " +
|
24
|
+
JSON.pretty_generate(to_h)
|
17
25
|
end
|
18
26
|
|
19
27
|
end
|
data/lib/emailable/version.rb
CHANGED
data/lib/emailable.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'json'
|
3
|
+
|
1
4
|
require 'emailable/version'
|
5
|
+
require 'emailable/errors'
|
2
6
|
require 'emailable/client'
|
3
7
|
require 'emailable/response'
|
4
8
|
require 'emailable/batch'
|
@@ -33,9 +37,7 @@ module Emailable
|
|
33
37
|
response = client.request(:get, 'verify', opts)
|
34
38
|
|
35
39
|
if response.status == 249
|
36
|
-
raise Emailable::TimeoutError.new(
|
37
|
-
code: response.status, message: response.body
|
38
|
-
)
|
40
|
+
raise Emailable::TimeoutError.new(response.body)
|
39
41
|
else
|
40
42
|
Verification.new(response.body)
|
41
43
|
end
|
@@ -47,22 +49,4 @@ module Emailable
|
|
47
49
|
Account.new(response.body)
|
48
50
|
end
|
49
51
|
|
50
|
-
|
51
|
-
class Error < StandardError
|
52
|
-
attr_accessor :code, :message
|
53
|
-
|
54
|
-
def initialize(code: nil, message: nil)
|
55
|
-
@code = code
|
56
|
-
@message = message
|
57
|
-
end
|
58
|
-
end
|
59
|
-
class BadRequestError < Error; end
|
60
|
-
class UnauthorizedError < Error; end
|
61
|
-
class PaymentRequiredError < Error; end
|
62
|
-
class ForbiddenError < Error; end
|
63
|
-
class NotFoundError < Error; end
|
64
|
-
class TooManyRequestsError < Error; end
|
65
|
-
class InternalServerError < Error; end
|
66
|
-
class ServiceUnavailableError < Error; end
|
67
|
-
class TimeoutError < Error; end
|
68
52
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Emailable
|
4
|
+
module Resources
|
5
|
+
class APIResourceTest < Minitest::Test
|
6
|
+
class Example < APIResource
|
7
|
+
attr_accessor :foo, :bar, :baz
|
8
|
+
end
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@e = Example.new(foo: 'abc', bar: 123, baz: true)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_init
|
15
|
+
assert_equal 'abc', @e.foo
|
16
|
+
assert_equal 123, @e.bar
|
17
|
+
assert_equal true, @e.baz
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_to_h
|
21
|
+
correct = {
|
22
|
+
foo: 'abc',
|
23
|
+
bar: 123,
|
24
|
+
baz: true,
|
25
|
+
}
|
26
|
+
assert_equal correct, @e.to_h
|
27
|
+
assert_equal correct, @e.to_hash
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_to_json
|
31
|
+
correct = %q|{"foo":"abc","bar":123,"baz":true}|
|
32
|
+
assert_equal correct, @e.to_json
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_inspect
|
36
|
+
correct = <<~STR.chomp
|
37
|
+
#<> JSON: {
|
38
|
+
"foo": "abc",
|
39
|
+
"bar": 123,
|
40
|
+
"baz": true
|
41
|
+
}
|
42
|
+
STR
|
43
|
+
output = @e.inspect.gsub(/<.*>/, '<>')
|
44
|
+
assert_equal correct, output
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emailable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emailable
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- lib/emailable/batch.rb
|
135
135
|
- lib/emailable/client.rb
|
136
136
|
- lib/emailable/email_validator.rb
|
137
|
+
- lib/emailable/errors.rb
|
137
138
|
- lib/emailable/resources/account.rb
|
138
139
|
- lib/emailable/resources/api_resource.rb
|
139
140
|
- lib/emailable/resources/batch_status.rb
|
@@ -142,6 +143,7 @@ files:
|
|
142
143
|
- lib/emailable/version.rb
|
143
144
|
- test/email_validator_test.rb
|
144
145
|
- test/emailable/batch_test.rb
|
146
|
+
- test/emailable/resources/api_resource_test.rb
|
145
147
|
- test/emailable_test.rb
|
146
148
|
- test/test_helper.rb
|
147
149
|
homepage: https://emailable.com
|
@@ -151,7 +153,7 @@ metadata:
|
|
151
153
|
bug_tracker_uri: https://github.com/emailable/emailable-ruby/issues
|
152
154
|
documentation_uri: https://docs.emailable.com/?ruby
|
153
155
|
source_code_uri: https://github.com/emailable/emailable-ruby
|
154
|
-
post_install_message:
|
156
|
+
post_install_message:
|
155
157
|
rdoc_options: []
|
156
158
|
require_paths:
|
157
159
|
- lib
|
@@ -167,11 +169,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
169
|
version: '0'
|
168
170
|
requirements: []
|
169
171
|
rubygems_version: 3.1.6
|
170
|
-
signing_key:
|
172
|
+
signing_key:
|
171
173
|
specification_version: 4
|
172
174
|
summary: Ruby bindings for the Emailable API
|
173
175
|
test_files:
|
174
176
|
- test/email_validator_test.rb
|
175
177
|
- test/emailable/batch_test.rb
|
178
|
+
- test/emailable/resources/api_resource_test.rb
|
176
179
|
- test/emailable_test.rb
|
177
180
|
- test/test_helper.rb
|