Skip to content

Commit 57b9746

Browse files
committed
Merge branch 'release/3.1.1'
* release/3.1.1: 3.1.1 Removed unecessary require Updated travis url Moved inspect with email to verification resource since others won't have it. Also updated test. Fixed error handling to be more standard. Fixed bin/console that didn't work properly. Improved tests to not load active_record except where needed. Added requires for json and net/http that are needed in plain ruby environments. Add #to_json on APIResources
2 parents 9475df5 + a659398 commit 57b9746

File tree

12 files changed

+104
-52
lines changed

12 files changed

+104
-52
lines changed

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
emailable (3.0.2)
4+
emailable (3.1.1)
55

66
GEM
77
remote: https://rubygems.org/

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Emailable Ruby Library
22

3-
[![Build Status](https://app.travis-ci.com/emailable/emailable-ruby.svg)](https://travis-ci.com/emailable/emailable-ruby)
3+
[![Build Status](https://app.travis-ci.com/emailable/emailable-ruby.svg)](https://app.travis-ci.com/emailable/emailable-ruby)
44
[![Maintainability](https://api.codeclimate.com/v1/badges/e7eef54e491adec95e6d/maintainability)](https://codeclimate.com/github/emailable/emailable-ruby/maintainability)
55

66
This is the official ruby wrapper for the Emailable API.

bin/console

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
#!/usr/bin/env ruby
22

3-
require "bundler/setup"
4-
require "emailable/ruby"
3+
require 'bundler/setup'
4+
require 'emailable'
55

66
# You can add fixtures and/or initialization code here to make experimenting
77
# with your gem easier. You can also use a different console, if you like.
88

99
# (If you use this, don't forget to add pry to your Gemfile!)
10-
# require "pry"
10+
# require 'pry'
1111
# Pry.start
1212

13-
require "irb"
13+
require 'irb'
1414
IRB.start(__FILE__)

lib/emailable.rb

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
require 'net/http'
2+
require 'json'
3+
14
require 'emailable/version'
5+
require 'emailable/errors'
26
require 'emailable/client'
37
require 'emailable/response'
48
require 'emailable/batch'
@@ -33,9 +37,7 @@ def verify(email, smtp: nil, accept_all: nil, timeout: nil)
3337
response = client.request(:get, 'verify', opts)
3438

3539
if response.status == 249
36-
raise Emailable::TimeoutError.new(
37-
code: response.status, message: response.body
38-
)
40+
raise Emailable::TimeoutError.new(response.body)
3941
else
4042
Verification.new(response.body)
4143
end
@@ -47,22 +49,4 @@ def account
4749
Account.new(response.body)
4850
end
4951

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
6852
end

lib/emailable/client.rb

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
module Emailable
22
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
313

414
def initialize
515
@base_url = 'https://api.emailable.com/v1'
@@ -33,22 +43,7 @@ def request(method, endpoint, params = {})
3343
status = response.status
3444
return response if status.between?(200, 299)
3545

36-
error_attributes = {
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'])
5247
end
5348

5449
private

lib/emailable/errors.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

lib/emailable/resources/api_resource.rb

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,21 @@ def initialize(attributes = {})
77
end
88
end
99

10-
def inspect
11-
ivars = instance_variables.map do |e|
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)]
1313
end.to_h
14-
fmtted_email = @email ? " #{@email}" : ''
15-
"#<#{self.class}:0x#{(object_id << 1).to_s(16)}#{fmtted_email}> JSON: " +
16-
JSON.pretty_generate(ivars)
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)
1725
end
1826

1927
end

lib/emailable/resources/verification.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,10 @@ class Verification < APIResource
1111
end
1212
end
1313

14+
def inspect
15+
"#<#{self.class}:0x#{(object_id << 1).to_s(16)}#{@email}> JSON: " +
16+
JSON.pretty_generate(to_h)
17+
end
18+
1419
end
1520
end

lib/emailable/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module Emailable
2-
VERSION = '3.1.0'
2+
VERSION = '3.1.1'
33
end

test/email_validator_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
require 'active_model'
12
require 'test_helper'
23

34
class EmailValidatorTest < Minitest::Test

0 commit comments

Comments
 (0)